Unterschiede
Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.
swt-jface:text-user-drawn 2008/04/10 11:40 | swt-jface:text-user-drawn 2020/01/22 20:59 aktuell | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Text-Control, selbst gezeichnet ====== | ====== Text-Control, selbst gezeichnet ====== | ||
+ | Ein recht großes Manke des SWT-Text-Controls ist, dass der enthaltenden Text im Zustand //disabled// nicht kopiert werden kann. | ||
+ | Ferner ist der Text grau und somit recht schlecht lesbar. Der folgende Code behebt diese beiden Nachteile:\\ | ||
+ | \\ | ||
+ | <html> | ||
+ | <script type="text/javascript"><!-- | ||
+ | google_ad_client="pub-9681858985507948"; | ||
+ | google_ad_width = 468; | ||
+ | google_ad_height = 60; | ||
+ | google_ad_format = "468x60_as"; | ||
+ | google_ad_type = "text"; | ||
+ | google_ad_channel = ""; | ||
+ | google_color_border = "cccccc"; | ||
+ | google_color_bg = "FFFFFF"; | ||
+ | google_color_link = "1d2d8c"; | ||
+ | google_color_text = "000000"; | ||
+ | google_color_url = "1d2d8c"; | ||
+ | //--> | ||
+ | </script> | ||
+ | <script type="text/javascript" | ||
+ | src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> | ||
+ | </script> | ||
+ | </html> | ||
+ | \\ | ||
<code java> | <code java> | ||
public void setUneditable(final Text text, final boolean uneditable) { | public void setUneditable(final Text text, final boolean uneditable) { | ||
if (WidgetUtils.canBeUsed(text)) { | if (WidgetUtils.canBeUsed(text)) { | ||
text.setData(FormToolkit.KEY_DRAW_BORDER, !uneditable); | text.setData(FormToolkit.KEY_DRAW_BORDER, !uneditable); | ||
- | text.setData(UNEDITABLE_FLAG_KEY, uneditable); // mark control | + | text.setData(UNEDITABLE_FLAG_KEY, uneditable); |
text.setEditable(!uneditable); | text.setEditable(!uneditable); | ||
- | final String painterAddedKey = "painterAddedKey"; //$NON-NLS-1$ | + | final String painterAddedKey = "KEY_PAINTER_ADDED"; |
final Composite pComp = text.getParent(); | final Composite pComp = text.getParent(); | ||
if (uneditable && null == pComp.getData(painterAddedKey)) { | if (uneditable && null == pComp.getData(painterAddedKey)) { | ||
Zeile 22: | Zeile 45: | ||
private PaintListener getUneditableBorderPaintListener() { | private PaintListener getUneditableBorderPaintListener() { | ||
- | if (m_uneditableBorderPaintListener == null) { | + | if (uneditableBorderPaintListener == null) { |
- | m_uneditableBorderPaintListener = new PaintListener() { | + | uneditableBorderPaintListener = new PaintListener() { |
public void paintControl(PaintEvent event) { | public void paintControl(PaintEvent event) { | ||
Composite composite = (Composite) event.widget; | Composite composite = (Composite) event.widget; | ||
Control[] children = composite.getChildren(); | Control[] children = composite.getChildren(); | ||
GC gc = event.gc; | GC gc = event.gc; | ||
- | gc.setForeground(getUneditableTextBorderColor()); | + | gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY); |
for (int i = 0; i < children.length; i++) { | for (int i = 0; i < children.length; i++) { | ||
Zeile 45: | Zeile 68: | ||
}; | }; | ||
} | } | ||
- | return m_uneditableBorderPaintListener; | + | return uneditableBorderPaintListener; |
- | } | + | |
- | + | ||
- | private Color getUneditableTextBorderColor() { | + | |
- | final String colorKey = "COLOR_NONEDITABLE_TEXT_BOREDER"; //$NON-NLS-1$ | + | |
- | + | ||
- | Color borderColor = getFormToolkit().getColors().getColor(colorKey); | + | |
- | if (null == borderColor) { | + | |
- | Color origBorderColor = getFormToolkit().getColors().getBorderColor(); | + | |
- | int r = brighter(origBorderColor.getRed(), 2, 3); | + | |
- | int g = brighter(origBorderColor.getGreen(), 2, 3); | + | |
- | int b = brighter(origBorderColor.getBlue(), 2, 3); | + | |
- | borderColor = getFormToolkit().getColors().createColor(colorKey, r, g, b); | + | |
- | } | + | |
- | return borderColor; | + | |
- | } | + | |
- | + | ||
- | private int brighter(final int color, final int x, final int y) { | + | |
- | return (255 - color) * x / y + color; | + | |
} | } | ||
</code> | </code> | ||
Zeile 69: | Zeile 74: | ||
Verwendung:\\ | Verwendung:\\ | ||
<code> | <code> | ||
- | Text myText = new Text(); | + | Text myText = ... |
setUneditable(myText, true); | setUneditable(myText, true); | ||
</code> | </code> |