use of org.eclipse.swt.widgets.Canvas in project linuxtools by eclipse.
the class CallgraphView method initializeView.
/**
* Initializes the view by creating composites (if necessary) and canvases
* Calls loadData(), and calls finishLoad() if not in realTime mode (otherwise
* it is up to the user-defined update methods to finish loading).
*
* @return status
*/
@Override
public IStatus initializeView(Display targetDisplay, IProgressMonitor monitor) {
if (targetDisplay == null && Display.getCurrent() == null) {
Display.getDefault();
}
makeTreeComp();
makeGraphComp();
graphComp.setBackgroundMode(SWT.INHERIT_FORCE);
// Create papa canvas
Canvas papaCanvas = new Canvas(graphComp, SWT.BORDER);
GridLayout papaLayout = new GridLayout(1, true);
papaLayout.horizontalSpacing = 0;
papaLayout.verticalSpacing = 0;
papaLayout.marginHeight = 0;
papaLayout.marginWidth = 0;
papaCanvas.setLayout(papaLayout);
GridData papaGD = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false);
papaGD.widthHint = 160;
papaCanvas.setLayoutData(papaGD);
// Add first button
// $NON-NLS-1$
Image image = getImageDescriptor("icons/up.gif").createImage();
Button up = new Button(papaCanvas, SWT.PUSH);
GridData buttonData = new GridData(SWT.CENTER, SWT.CENTER, true, false);
buttonData.widthHint = 150;
buttonData.heightHint = 20;
up.setData(buttonData);
up.setImage(image);
// $NON-NLS-1$
up.setToolTipText(Messages.getString("CallgraphView.ThumbNailUp"));
// Add thumb canvas
Canvas thumbCanvas = new Canvas(papaCanvas, SWT.NONE);
// Add second button
// $NON-NLS-1$
image = getImageDescriptor("icons/down.gif").createImage();
Button down = new Button(papaCanvas, SWT.PUSH);
buttonData = new GridData(SWT.CENTER, SWT.CENTER, true, false);
buttonData.widthHint = 150;
buttonData.heightHint = 0;
down.setData(buttonData);
down.setImage(image);
// $NON-NLS-1$
down.setToolTipText(Messages.getString("CallgraphView.ThumbNailDown"));
// Initialize graph
g = new StapGraph(graphComp, SWT.BORDER, treeComp, papaCanvas, this);
g.setLayoutData(new GridData(masterComposite.getBounds().width, Display.getCurrent().getBounds().height - TREE_SIZE));
up.addSelectionListener(new AutoScrollSelectionListener(AutoScrollSelectionListener.AUTO_SCROLL_UP, g));
down.addSelectionListener(new AutoScrollSelectionListener(AutoScrollSelectionListener.AUTO_SCROLL_DOWN, g));
// Initialize thumbnail
GridData thumbGD = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false);
thumbGD.widthHint = 160;
thumbCanvas.setLayoutData(thumbGD);
LightweightSystem lws = new LightweightSystem(thumbCanvas);
ScrollableThumbnail thumb = new ScrollableThumbnail(g.getViewport());
thumb.setSource(g.getContents());
lws.setContents(thumb);
loadData(monitor);
return finishLoad(monitor);
}
use of org.eclipse.swt.widgets.Canvas in project knime-core by knime.
the class NewOverviewOutlinePage method createControl.
/**
* {@inheritDoc}
*/
@Override
public void createControl(final Composite parent) {
// create canvas and lws
m_overview = new Canvas(parent, SWT.NONE);
LightweightSystem lws = new LightweightSystem(m_overview);
// create thumbnail
m_thumbnail = new ScrollableThumbnail((Viewport) m_rootEditPart.getFigure());
m_thumbnail.setBorder(new MarginBorder(3));
m_thumbnail.setSource(m_rootEditPart.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(m_thumbnail);
}
use of org.eclipse.swt.widgets.Canvas in project eclipse.platform.swt by eclipse.
the class ImageAnalyzer method createWidgets.
void createWidgets() {
// Add the widgets to the shell in a grid layout.
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.numColumns = 2;
shell.setLayout(layout);
// Add a composite to contain some control widgets across the top.
Composite controls = new Composite(shell, SWT.NONE);
RowLayout rowLayout = new RowLayout();
rowLayout.marginTop = 5;
rowLayout.marginBottom = 5;
rowLayout.spacing = 8;
controls.setLayout(rowLayout);
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
controls.setLayoutData(gridData);
// Combo to change the background.
Group group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("Background"));
backgroundCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY);
backgroundCombo.setItems(bundle.getString("None"), bundle.getString("White"), bundle.getString("Black"), bundle.getString("Red"), bundle.getString("Green"), bundle.getString("Blue"));
backgroundCombo.select(backgroundCombo.indexOf(bundle.getString("White")));
backgroundCombo.addSelectionListener(widgetSelectedAdapter(event -> changeBackground()));
// Combo to change the compression ratio.
group = new Group(controls, SWT.NONE);
group.setLayout(new GridLayout(3, true));
group.setText(bundle.getString("Save_group"));
imageTypeCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY);
String[] types = { "JPEG", "PNG", "GIF", "ICO", "TIFF", "BMP" };
for (String type : types) {
imageTypeCombo.add(type);
}
imageTypeCombo.select(imageTypeCombo.indexOf("JPEG"));
imageTypeCombo.addSelectionListener(widgetSelectedAdapter(event -> {
int index = imageTypeCombo.getSelectionIndex();
switch(index) {
case 0:
compressionCombo.setEnabled(true);
compressionRatioLabel.setEnabled(true);
if (compressionCombo.getItemCount() == 100)
break;
compressionCombo.removeAll();
for (int i = 0; i < 100; i++) {
compressionCombo.add(String.valueOf(i + 1));
}
compressionCombo.select(compressionCombo.indexOf("75"));
break;
case 1:
compressionCombo.setEnabled(true);
compressionRatioLabel.setEnabled(true);
if (compressionCombo.getItemCount() == 10)
break;
compressionCombo.removeAll();
for (int i = 0; i < 4; i++) {
compressionCombo.add(String.valueOf(i));
}
compressionCombo.select(0);
break;
case 2:
case 3:
case 4:
case 5:
compressionCombo.setEnabled(false);
compressionRatioLabel.setEnabled(false);
break;
}
}));
imageTypeCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
compressionRatioLabel = new Label(group, SWT.NONE);
compressionRatioLabel.setText(bundle.getString("Compression"));
compressionRatioLabel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
compressionCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY);
for (int i = 0; i < 100; i++) {
compressionCombo.add(String.valueOf(i + 1));
}
compressionCombo.select(compressionCombo.indexOf("75"));
compressionCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
// Combo to change the x scale.
String[] values = { "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("X_scale"));
scaleXCombo = new Combo(group, SWT.DROP_DOWN);
for (String value : values) {
scaleXCombo.add(value);
}
scaleXCombo.select(scaleXCombo.indexOf("1"));
scaleXCombo.addSelectionListener(widgetSelectedAdapter(event -> scaleX()));
// Combo to change the y scale.
group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("Y_scale"));
scaleYCombo = new Combo(group, SWT.DROP_DOWN);
for (String value : values) {
scaleYCombo.add(value);
}
scaleYCombo.select(scaleYCombo.indexOf("1"));
scaleYCombo.addSelectionListener(widgetSelectedAdapter(event -> scaleY()));
// Combo to change the alpha value.
group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("Alpha_K"));
alphaCombo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY);
for (int i = 0; i <= 255; i += 5) {
alphaCombo.add(String.valueOf(i));
}
alphaCombo.select(alphaCombo.indexOf("255"));
alphaCombo.addSelectionListener(widgetSelectedAdapter(event -> alpha()));
// Check box to request incremental display.
group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("Display"));
incrementalCheck = new Button(group, SWT.CHECK);
incrementalCheck.setText(bundle.getString("Incremental"));
incrementalCheck.setSelection(incremental);
incrementalCheck.addSelectionListener(widgetSelectedAdapter(event -> incremental = ((Button) event.widget).getSelection()));
// Check box to request transparent display.
transparentCheck = new Button(group, SWT.CHECK);
transparentCheck.setText(bundle.getString("Transparent"));
transparentCheck.setSelection(transparent);
transparentCheck.addSelectionListener(widgetSelectedAdapter(event -> {
transparent = ((Button) event.widget).getSelection();
if (image != null) {
imageCanvas.redraw();
}
}));
// Check box to request mask display.
maskCheck = new Button(group, SWT.CHECK);
maskCheck.setText(bundle.getString("Mask"));
maskCheck.setSelection(showMask);
maskCheck.addSelectionListener(widgetSelectedAdapter(event -> {
showMask = ((Button) event.widget).getSelection();
if (image != null) {
imageCanvas.redraw();
}
}));
// Check box to request background display.
backgroundCheck = new Button(group, SWT.CHECK);
backgroundCheck.setText(bundle.getString("Background"));
backgroundCheck.setSelection(showBackground);
backgroundCheck.addSelectionListener(widgetSelectedAdapter(event -> showBackground = ((Button) event.widget).getSelection()));
// Group the animation buttons.
group = new Group(controls, SWT.NONE);
group.setLayout(new RowLayout());
group.setText(bundle.getString("Animation"));
// Push button to display the previous image in a multi-image file.
previousButton = new Button(group, SWT.PUSH);
previousButton.setText(bundle.getString("Previous"));
previousButton.setEnabled(false);
previousButton.addSelectionListener(widgetSelectedAdapter(event -> previous()));
// Push button to display the next image in a multi-image file.
nextButton = new Button(group, SWT.PUSH);
nextButton.setText(bundle.getString("Next"));
nextButton.setEnabled(false);
nextButton.addSelectionListener(widgetSelectedAdapter(event -> next()));
// Push button to toggle animation of a multi-image file.
animateButton = new Button(group, SWT.PUSH);
animateButton.setText(bundle.getString("Animate"));
animateButton.setEnabled(false);
animateButton.addSelectionListener(widgetSelectedAdapter(event -> animate()));
// Label to show the image file type.
typeLabel = new Label(shell, SWT.NONE);
typeLabel.setText(bundle.getString("Type_initial"));
typeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Canvas to show the image.
imageCanvas = new Canvas(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND);
imageCanvas.setBackground(whiteColor);
imageCanvas.setCursor(crossCursor);
gridData = new GridData();
gridData.verticalSpan = 15;
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
imageCanvas.setLayoutData(gridData);
imageCanvas.addPaintListener(event -> {
if (image == null) {
Rectangle bounds = imageCanvas.getBounds();
event.gc.fillRectangle(0, 0, bounds.width, bounds.height);
} else {
paintImage(event);
}
});
imageCanvas.addMouseMoveListener(event -> {
if (image != null) {
showColorAt(event.x, event.y);
}
});
// Set up the image canvas scroll bars.
ScrollBar horizontal = imageCanvas.getHorizontalBar();
horizontal.setVisible(true);
horizontal.setMinimum(0);
horizontal.setEnabled(false);
horizontal.addSelectionListener(widgetSelectedAdapter(event -> scrollHorizontally((ScrollBar) event.widget)));
ScrollBar vertical = imageCanvas.getVerticalBar();
vertical.setVisible(true);
vertical.setMinimum(0);
vertical.setEnabled(false);
vertical.addSelectionListener(widgetSelectedAdapter(event -> scrollVertically((ScrollBar) event.widget)));
// Label to show the image size.
sizeLabel = new Label(shell, SWT.NONE);
sizeLabel.setText(bundle.getString("Size_initial"));
sizeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the image depth.
depthLabel = new Label(shell, SWT.NONE);
depthLabel.setText(bundle.getString("Depth_initial"));
depthLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the transparent pixel.
transparentPixelLabel = new Label(shell, SWT.NONE);
transparentPixelLabel.setText(bundle.getString("Transparent_pixel_initial"));
transparentPixelLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the time to load.
timeToLoadLabel = new Label(shell, SWT.NONE);
timeToLoadLabel.setText(bundle.getString("Time_to_load_initial"));
timeToLoadLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Separate the animation fields from the rest of the fields.
Label separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
separator.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the logical screen size for animation.
screenSizeLabel = new Label(shell, SWT.NONE);
screenSizeLabel.setText(bundle.getString("Animation_size_initial"));
screenSizeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the background pixel.
backgroundPixelLabel = new Label(shell, SWT.NONE);
backgroundPixelLabel.setText(bundle.getString("Background_pixel_initial"));
backgroundPixelLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the image location (x, y).
locationLabel = new Label(shell, SWT.NONE);
locationLabel.setText(bundle.getString("Image_location_initial"));
locationLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the image disposal method.
disposalMethodLabel = new Label(shell, SWT.NONE);
disposalMethodLabel.setText(bundle.getString("Disposal_initial"));
disposalMethodLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the image delay time.
delayTimeLabel = new Label(shell, SWT.NONE);
delayTimeLabel.setText(bundle.getString("Delay_initial"));
delayTimeLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show the background pixel.
repeatCountLabel = new Label(shell, SWT.NONE);
repeatCountLabel.setText(bundle.getString("Repeats_initial"));
repeatCountLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Separate the animation fields from the palette.
separator = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
separator.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Label to show if the image has a direct or indexed palette.
paletteLabel = new Label(shell, SWT.NONE);
paletteLabel.setText(bundle.getString("Palette_initial"));
paletteLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
// Canvas to show the image's palette.
paletteCanvas = new Canvas(shell, SWT.BORDER | SWT.V_SCROLL | SWT.NO_REDRAW_RESIZE);
paletteCanvas.setFont(fixedWidthFont);
paletteCanvas.getVerticalBar().setVisible(true);
gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
GC gc = new GC(paletteLabel);
paletteWidth = gc.stringExtent(bundle.getString("Max_length_string")).x;
gc.dispose();
gridData.widthHint = paletteWidth;
// show at least 16 colors
gridData.heightHint = 16 * 11;
paletteCanvas.setLayoutData(gridData);
paletteCanvas.addPaintListener(event -> {
if (image != null)
paintPalette(event);
});
// Set up the palette canvas scroll bar.
vertical = paletteCanvas.getVerticalBar();
vertical.setVisible(true);
vertical.setMinimum(0);
vertical.setIncrement(10);
vertical.setEnabled(false);
vertical.addSelectionListener(widgetSelectedAdapter(event -> scrollPalette((ScrollBar) event.widget)));
// Sash to see more of image or image data.
sash = new Sash(shell, SWT.HORIZONTAL);
gridData = new GridData();
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
sash.setLayoutData(gridData);
sash.addSelectionListener(widgetSelectedAdapter(event -> {
if (event.detail != SWT.DRAG) {
((GridData) paletteCanvas.getLayoutData()).heightHint = SWT.DEFAULT;
Rectangle paletteCanvasBounds = paletteCanvas.getBounds();
int minY = paletteCanvasBounds.y + 20;
Rectangle dataLabelBounds = dataLabel.getBounds();
int maxY = statusLabel.getBounds().y - dataLabelBounds.height - 20;
if (event.y > minY && event.y < maxY) {
Rectangle oldSash = sash.getBounds();
sash.setBounds(event.x, event.y, event.width, event.height);
int diff = event.y - oldSash.y;
Rectangle bounds = imageCanvas.getBounds();
imageCanvas.setBounds(bounds.x, bounds.y, bounds.width, bounds.height + diff);
bounds = paletteCanvasBounds;
paletteCanvas.setBounds(bounds.x, bounds.y, bounds.width, bounds.height + diff);
bounds = dataLabelBounds;
dataLabel.setBounds(bounds.x, bounds.y + diff, bounds.width, bounds.height);
bounds = dataText.getBounds();
dataText.setBounds(bounds.x, bounds.y + diff, bounds.width, bounds.height - diff);
// shell.layout(true);
}
}
}));
// Label to show data-specific fields.
dataLabel = new Label(shell, SWT.NONE);
dataLabel.setText(bundle.getString("Pixel_data_initial"));
gridData = new GridData();
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
dataLabel.setLayoutData(gridData);
// Text to show a dump of the data.
dataText = new StyledText(shell, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL);
dataText.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
dataText.setFont(fixedWidthFont);
gridData = new GridData();
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
gridData.verticalAlignment = GridData.FILL;
gridData.heightHint = 128;
gridData.grabExcessVerticalSpace = true;
dataText.setLayoutData(gridData);
dataText.addMouseListener(MouseListener.mouseDownAdapter(event -> {
if (image != null && event.button == 1) {
showColorForData();
}
}));
dataText.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent event) {
if (image != null) {
showColorForData();
}
}
});
// Label to show status and cursor location in image.
statusLabel = new Label(shell, SWT.NONE);
statusLabel.setText("");
gridData = new GridData();
gridData.horizontalSpan = 2;
gridData.horizontalAlignment = GridData.FILL;
statusLabel.setLayoutData(gridData);
}
use of org.eclipse.swt.widgets.Canvas in project eclipse.platform.swt by eclipse.
the class DNDExample method createDropWidget.
private void createDropWidget(Composite parent) {
parent.setLayout(new FormLayout());
Combo combo = new Combo(parent, SWT.READ_ONLY);
combo.setItems("Toggle Button", "Radio Button", "Checkbox", "Canvas", "Label", "List", "Table", "Tree", "Text", "StyledText", "Combo");
combo.select(LABEL);
dropControlType = combo.getSelectionIndex();
dropControl = createWidget(dropControlType, parent, "Drop Target");
combo.addSelectionListener(widgetSelectedAdapter(e -> {
Object data = dropControl.getLayoutData();
Composite dropParent = dropControl.getParent();
dropControl.dispose();
Combo c = (Combo) e.widget;
dropControlType = c.getSelectionIndex();
dropControl = createWidget(dropControlType, dropParent, "Drop Target");
dropControl.setLayoutData(data);
if (dropEnabled)
createDropTarget();
dropParent.layout();
}));
Button b = new Button(parent, SWT.CHECK);
b.setText("DropTarget");
b.addSelectionListener(widgetSelectedAdapter(e -> {
Button eb = (Button) e.widget;
dropEnabled = eb.getSelection();
if (dropEnabled) {
createDropTarget();
} else {
if (dropTarget != null) {
dropTarget.dispose();
}
dropTarget = null;
}
}));
// initialize state
b.setSelection(true);
dropEnabled = true;
FormData data = new FormData();
data.top = new FormAttachment(0, 10);
data.bottom = new FormAttachment(combo, -10);
data.left = new FormAttachment(0, 10);
data.right = new FormAttachment(100, -10);
dropControl.setLayoutData(data);
data = new FormData();
data.bottom = new FormAttachment(100, -10);
data.left = new FormAttachment(0, 10);
combo.setLayoutData(data);
data = new FormData();
data.bottom = new FormAttachment(100, -10);
data.left = new FormAttachment(combo, 10);
b.setLayoutData(data);
}
use of org.eclipse.swt.widgets.Canvas in project eclipse.platform.swt by eclipse.
the class GraphicsExample method createCanvas.
void createCanvas(Composite parent) {
int style = SWT.NO_BACKGROUND;
if (dbItem.getSelection())
style |= SWT.DOUBLE_BUFFERED;
canvas = new Canvas(parent, style);
canvas.addListener(SWT.Paint, event -> {
GC gc = event.gc;
Rectangle rect = canvas.getClientArea();
Device device = gc.getDevice();
Pattern pattern = null;
if (background.getBgColor1() != null) {
if (background.getBgColor2() != null) {
// gradient
pattern = new Pattern(device, 0, 0, rect.width, rect.height, background.getBgColor1(), background.getBgColor2());
gc.setBackgroundPattern(pattern);
} else {
// solid color
gc.setBackground(background.getBgColor1());
}
} else if (background.getBgImage() != null) {
// image
pattern = new Pattern(device, background.getBgImage());
gc.setBackgroundPattern(pattern);
}
gc.fillRectangle(rect);
GraphicsTab tab = getTab();
if (tab != null)
tab.paint(gc, rect.width, rect.height);
if (pattern != null)
pattern.dispose();
});
}
Aggregations