/******************************************************************************* | |
* Copyright (c) 2015, 2016 IBM Corporation and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.swt.snippets; | |
import static org.eclipse.swt.events.SelectionListener.*; | |
import org.eclipse.swt.*; | |
import org.eclipse.swt.custom.*; | |
import org.eclipse.swt.graphics.*; | |
import org.eclipse.swt.layout.*; | |
import org.eclipse.swt.widgets.*; | |
/** | |
* Transparent Background example snippet: Set transparent background. | |
* | |
* For a list of all SWT example snippets see | |
* http://www.eclipse.org/swt/snippets/ | |
*/ | |
public class Snippet365 { | |
static Image oldImage; | |
static Image newImage; | |
// Containers | |
static Composite containerGroup; | |
static Canvas canvas; | |
static Composite composite; | |
static Group group; | |
static Sash sash; | |
// Native | |
static Composite nativeGroup; | |
static Button buttonCheckBox; | |
static ToolBar toolBar; | |
static CoolBar coolBar; | |
static Label label; | |
static Link link; | |
static Scale scale; | |
static Button radio; | |
static Button check; | |
static Button push; | |
// Custom | |
static Composite customGroup; | |
static CLabel cLabel; | |
static StyledText styledText; | |
static SashForm sashForm; | |
static CTabFolder cTab; | |
static CTabFolder gradientCTab; | |
// Item | |
static Composite itemGroup; | |
static TabFolder tabFolder; | |
static Table table; | |
static Tree tree; | |
static ExpandBar expandBar; | |
// As Designed | |
static Composite defaultBackgroundGroup; | |
static Text text; | |
static Combo combo; | |
static ProgressBar progressBar; | |
static DateTime dateTime; | |
static Slider slider; | |
static List list; | |
static CCombo ccombo; | |
public static void main(String[] args) { | |
final Display display = new Display(); | |
final Shell shell = new Shell(display); | |
shell.setText("Snippet365 - Transparent Background"); | |
RowLayout layout = new RowLayout(SWT.VERTICAL); | |
layout.spacing = 20; | |
layout.marginWidth = 10; | |
layout.marginHeight = 10; | |
shell.setLayout(layout); | |
// Standard color background for Shell | |
// shell.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// Gradient background for Shell | |
shell.addListener(SWT.Resize, event -> { | |
Rectangle rect = shell.getClientArea(); | |
Image newImage = new Image(display, Math.max(1, rect.width), 1); | |
GC gc = new GC(newImage); | |
gc.setForeground(display.getSystemColor(SWT.COLOR_BLUE)); | |
gc.setBackground(display.getSystemColor(SWT.COLOR_GREEN)); | |
gc.fillGradientRectangle(rect.x, rect.y, rect.width, 1, false); | |
gc.dispose(); | |
shell.setBackgroundImage(newImage); | |
if (oldImage != null) | |
oldImage.dispose(); | |
oldImage = newImage; | |
}); | |
// Transparent | |
buttonCheckBox = new Button(shell, SWT.CHECK | SWT.None); | |
buttonCheckBox.setText("SET TRANSPARENT"); | |
buttonCheckBox.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
buttonCheckBox.setSelection(false); | |
buttonCheckBox.addSelectionListener(widgetSelectedAdapter( e-> { | |
boolean transparent = ((Button) e.getSource()).getSelection(); | |
if (transparent) { | |
// ContainerGroup | |
containerGroup.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
canvas.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
composite.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
tabFolder.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
for (TabItem item : tabFolder.getItems()) { | |
item.getControl().setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
} | |
// Native | |
nativeGroup.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
toolBar.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
coolBar.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
label.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
link.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
scale.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
radio.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
check.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
group.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
sash.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
slider.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
list.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
// Custom | |
customGroup.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
cLabel.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
cTab.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_TRANSPARENT)); | |
gradientCTab.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_TRANSPARENT)); | |
sashForm.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_TRANSPARENT)); | |
for (Control control : sashForm.getChildren()) { | |
control.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_TRANSPARENT)); | |
} | |
// Default | |
push.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
defaultBackgroundGroup.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
combo.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
progressBar.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
dateTime.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
ccombo.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
text.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
styledText.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
expandBar.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
table.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
tree.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
// ItemGroup | |
itemGroup.setBackground(display.getSystemColor(SWT.COLOR_TRANSPARENT)); | |
} else { | |
// Native | |
nativeGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
toolBar.setBackground(null); | |
coolBar.setBackground(null); | |
label.setBackground(null); | |
link.setBackground(null); | |
scale.setBackground(null); | |
RGB rgb = display.getSystemColor(SWT.COLOR_CYAN).getRGB(); | |
radio.setBackground(new Color(display, new RGBA(rgb.red, rgb.blue, rgb.green, 255))); | |
check.setBackgroundImage(getBackgroundImage(display)); | |
group.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
sash.setBackground(display.getSystemColor(SWT.COLOR_DARK_CYAN)); | |
slider.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
list.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
text.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// ContainerGroup | |
containerGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
canvas.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
composite.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
tabFolder.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
for (TabItem item : tabFolder.getItems()) { | |
item.getControl().setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
} | |
// Custom | |
customGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
cLabel.setBackground((Color) null); | |
styledText.setBackground((Color) null); | |
sashForm.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
for (Control control : sashForm.getChildren()) { | |
control.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
} | |
cTab.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
gradientCTab.setBackground( | |
new Color[] { display.getSystemColor(SWT.COLOR_RED), | |
display.getSystemColor(SWT.COLOR_WHITE) }, new int[] { 90 }, true); | |
// Default | |
defaultBackgroundGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
push.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
combo.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
ccombo.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
dateTime.setBackground(null); | |
progressBar.setBackground(null); | |
expandBar.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
table.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
tree.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// ItemGroup | |
itemGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
} | |
})); | |
// ContainerGroup | |
containerGroup = new Composite(shell, SWT.NONE); | |
containerGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
containerGroup.setToolTipText("CONTAINER"); | |
layout = new RowLayout(); | |
layout.spacing = 20; | |
containerGroup.setLayout(layout); | |
// Native | |
nativeGroup = new Composite(shell, SWT.NONE); | |
nativeGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
nativeGroup.setToolTipText("NATIVE"); | |
layout = new RowLayout(); | |
layout.spacing = 20; | |
nativeGroup.setLayout(layout); | |
// Custom | |
customGroup = new Composite(shell, SWT.NONE); | |
customGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
customGroup.setToolTipText("CUSTOM"); | |
layout = new RowLayout(); | |
layout.spacing = 20; | |
customGroup.setLayout(layout); | |
// AsDesigned | |
defaultBackgroundGroup = new Composite(shell, SWT.NONE); | |
defaultBackgroundGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
defaultBackgroundGroup.setToolTipText("Default Background"); | |
layout = new RowLayout(); | |
layout.spacing = 20; | |
defaultBackgroundGroup.setLayout(layout); | |
// ItemGroup | |
itemGroup = new Composite(shell, SWT.NONE); | |
itemGroup.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); | |
itemGroup.setToolTipText("ITEM"); | |
layout = new RowLayout(); | |
layout.spacing = 20; | |
itemGroup.setLayout(layout); | |
// Label | |
label = new Label(nativeGroup, SWT.NONE); | |
label.setText("Label"); | |
// Radio button | |
radio = new Button(nativeGroup, SWT.RADIO); | |
radio.setText("Radio Button"); | |
radio.setSelection(true); | |
radio.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// Checkbox button with image | |
check = new Button(nativeGroup, SWT.CHECK); | |
check.setText("CheckBox Image"); | |
check.setSelection(true); | |
check.setBackgroundImage(getBackgroundImage(display)); | |
// Push Button | |
push = new Button(defaultBackgroundGroup, SWT.PUSH); | |
push.setText("Push Button"); | |
// Toolbar | |
toolBar = new ToolBar(nativeGroup, SWT.FLAT); | |
toolBar.pack(); | |
ToolItem item = new ToolItem(toolBar, SWT.PUSH); | |
item.setText("ToolBar_Item"); | |
// Coolbar | |
coolBar = new CoolBar(nativeGroup, SWT.BORDER); | |
for (int i=0; i<2; i++) { | |
CoolItem item2 = new CoolItem (coolBar, SWT.NONE); | |
Button button = new Button (coolBar, SWT.PUSH); | |
button.setText ("Button " + i); | |
Point size = button.computeSize (SWT.DEFAULT, SWT.DEFAULT); | |
item2.setPreferredSize (item2.computeSize (size.x, size.y)); | |
item2.setControl (button); | |
} | |
// Scale | |
scale = new Scale(nativeGroup, SWT.None); | |
scale.setMaximum(100); | |
scale.setSelection(20); | |
// Link | |
link = new Link(nativeGroup, SWT.NONE); | |
link.setText("<a>Sample link</a>"); | |
// List | |
list = new List(nativeGroup, SWT.BORDER); | |
list.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
list.add("List_one"); | |
list.add("List_two"); | |
list.add("List_three"); | |
list.add("List_four"); | |
// Canvas | |
canvas = new Canvas (containerGroup, SWT.NONE); | |
canvas.setToolTipText("Canvas"); | |
canvas.addPaintListener(e -> { | |
GC gc = e.gc; | |
gc.setForeground(display.getSystemColor(SWT.COLOR_RED)); | |
gc.drawRectangle(e.x+1, e.y+1, e.width-2, e.height-2); | |
gc.drawArc(2, 2, e.width-4, e.height-4, 0, 360); | |
}); | |
// Composite | |
composite = new Composite(containerGroup, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); | |
composite.setToolTipText("Composite"); | |
// TabFolder | |
tabFolder = new TabFolder(containerGroup, SWT.BORDER); | |
tabFolder.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
for (int i=0; i < 2; i++) { | |
TabItem tabItem = new TabItem (tabFolder, SWT.NONE); | |
tabItem.setText ("TabItem " + i); | |
Label label = new Label (tabFolder, SWT.PUSH); | |
label.setText ("Page " + i); | |
tabItem.setControl (label); | |
tabItem.getControl().setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
} | |
tabFolder.pack (); | |
// Group | |
group = new Group(containerGroup, SWT.NONE); | |
group.setText("Group"); | |
// Sash | |
sash = new Sash(containerGroup, SWT.HORIZONTAL | SWT.BORDER); | |
sash.setBackground(display.getSystemColor(SWT.COLOR_DARK_CYAN)); | |
sash.setLayoutData(new RowData(100, 100)); | |
sash.setToolTipText("Sash"); | |
// SashForm | |
sashForm = new SashForm(containerGroup, SWT.HORIZONTAL | SWT.BORDER); | |
Label leftLabel = new Label(sashForm, SWT.NONE); | |
leftLabel.setText("SashForm\nLeft\n...\n...\n...\n...\n..."); | |
Label rightLabel = new Label(sashForm, SWT.NONE); | |
rightLabel.setText("SashForm\nRight\n...\n...\n...\n...\n..."); | |
// DateTime | |
dateTime = new DateTime(defaultBackgroundGroup, SWT.NONE); | |
dateTime.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// Text | |
text = new Text(nativeGroup, SWT.BORDER); | |
text.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
text.setText("text"); | |
// ProgressBar | |
progressBar = new ProgressBar(defaultBackgroundGroup, SWT.NONE); | |
progressBar.setMaximum(100); | |
progressBar.setSelection(80); | |
// Combo | |
combo = new Combo(defaultBackgroundGroup, SWT.BORDER); | |
combo.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
combo.add("combo"); | |
combo.setText("combo"); | |
// Slider | |
slider = new Slider(nativeGroup, SWT.HORIZONTAL | SWT.BORDER); | |
slider.setSelection(20); | |
slider.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// CCombo | |
ccombo = new CCombo(defaultBackgroundGroup, SWT.BORDER); | |
ccombo.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
ccombo.add("ccombo"); | |
ccombo.setText("ccombo"); | |
// CLable | |
cLabel = new CLabel(customGroup, SWT.NONE); | |
cLabel.setText("CLabel"); | |
// Text | |
styledText = new StyledText(customGroup, SWT.BORDER); | |
styledText.setFont(new Font(display, "Tahoma", 18, SWT.BOLD | SWT.ITALIC)); | |
styledText.setForeground(display.getSystemColor(SWT.COLOR_DARK_BLUE)); | |
styledText.setText("Styled Text"); | |
styledText.append("\n"); | |
styledText.append("Example_string"); | |
styledText.append("\n"); | |
styledText.append("One_Two"); | |
styledText.append("\n"); | |
styledText.append("Two_Three"); | |
// CTabFolder | |
cTab = new CTabFolder(containerGroup, SWT.BORDER); | |
for (int i = 0; i < 2; i++) { | |
CTabItem cTabItem = new CTabItem(cTab, SWT.CLOSE, i); | |
cTabItem.setText("CTabItem " + (i + 1)); | |
} | |
cTab.setSelection(0); | |
// Gradient CTabFolder | |
gradientCTab = new CTabFolder(customGroup, SWT.BORDER); | |
gradientCTab.setBackground( | |
new Color[] { display.getSystemColor(SWT.COLOR_WHITE), display.getSystemColor(SWT.COLOR_RED) }, | |
new int[] { 90 }, true); | |
for (int i = 0; i < 2; i++) { | |
CTabItem cTabItem = new CTabItem(gradientCTab, SWT.CLOSE, i); | |
cTabItem.setText("CTabItem " + (i + 1)); | |
} | |
gradientCTab.setSelection(0); | |
// Table | |
table = new Table(itemGroup, SWT.V_SCROLL); | |
table.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
table.setLinesVisible(true); | |
table.setHeaderVisible(true); | |
TableItem tableItem = new TableItem(table, SWT.NONE); | |
tableItem.setText("TableItem - One"); | |
tableItem = new TableItem(table, SWT.NONE); | |
tableItem.setText("TableItem - Two"); | |
// Tree | |
tree = new Tree(itemGroup, SWT.NONE); | |
TreeItem treeItem = new TreeItem (tree, SWT.NONE); | |
treeItem.setText("Parent"); | |
TreeItem childItem = new TreeItem (treeItem, SWT.NONE); | |
childItem.setText("Child1"); | |
childItem = new TreeItem (treeItem, SWT.NONE); | |
childItem.setText("Child2"); | |
treeItem.setExpanded(true); | |
tree.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
// ExpandBar | |
expandBar = new ExpandBar (itemGroup, SWT.V_SCROLL); | |
expandBar.setBackground(display.getSystemColor(SWT.COLOR_CYAN)); | |
for (int i = 1; i <= 2; i++) { | |
ExpandItem item1 = new ExpandItem(expandBar, SWT.NONE, 0); | |
item1.setText("Expand_Bar_Entry " + i); | |
item1.setExpanded(true); | |
item1.setHeight(20); | |
} | |
shell.open(); | |
shell.pack(); | |
while (!shell.isDisposed()) { | |
if (!display.readAndDispatch()) | |
display.sleep(); | |
} | |
display.dispose(); | |
} | |
private static Image getBackgroundImage(final Display display) { | |
if (newImage == null) { | |
Rectangle rect = new Rectangle(0, 0, 115, 5); | |
newImage = new Image(display, Math.max(1, rect.width), 1); | |
GC gc = new GC(newImage); | |
gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); | |
gc.setBackground(display.getSystemColor(SWT.COLOR_RED)); | |
gc.fillGradientRectangle(rect.x, rect.y, rect.width, 1, false); | |
gc.dispose(); | |
} | |
return newImage; | |
} | |
} |