use of org.eclipse.swt.graphics.Cursor 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.graphics.Cursor in project eclipse.platform.swt by eclipse.
the class Test_org_eclipse_swt_graphics_Cursor method test_equalsLjava_lang_Object.
@Test
public void test_equalsLjava_lang_Object() {
/* Note: Two cursors are only considered equal if their handles are equal.
* So since Windows reuses cursor handles, and other platforms do not,
* it does not make sense to test whether cursor.equals(sameCursor).
*/
Cursor cursor = new Cursor(display, SWT.CURSOR_WAIT);
Cursor otherCursor = new Cursor(display, SWT.CURSOR_CROSS);
try {
// Test Cursor.equals(Object)
assertTrue("!cursor.equals((Object)null)", !cursor.equals((Object) null));
// Test Cursor.equals(Cursor)
assertTrue("!cursor.equals((Cursor)null)", !cursor.equals((Cursor) null));
assertTrue("cursor.equals(cursor)", cursor.equals(cursor));
assertTrue("!cursor.equals(otherCursor)", !cursor.equals(otherCursor));
} finally {
cursor.dispose();
otherCursor.dispose();
}
}
use of org.eclipse.swt.graphics.Cursor in project eclipse.platform.swt by eclipse.
the class Test_org_eclipse_swt_graphics_Cursor method test_ConstructorLorg_eclipse_swt_graphics_DeviceI.
@Test
public void test_ConstructorLorg_eclipse_swt_graphics_DeviceI() {
// Test new Cursor(Device device, int style)
// IllegalArgumentException when an unknown style is specified
Cursor cursor = new Cursor(display, SWT.CURSOR_ARROW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_WAIT);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_CROSS);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_APPSTARTING);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_HELP);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZEALL);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZENESW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZENS);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZENWSE);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZEWE);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZEN);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZES);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZEE);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZEW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZENE);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZESE);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZESW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_SIZENW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_UPARROW);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_IBEAM);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_NO);
cursor.dispose();
cursor = new Cursor(display, SWT.CURSOR_HAND);
cursor.dispose();
// device == null (valid)
cursor = new Cursor(null, SWT.CURSOR_ARROW);
cursor.dispose();
// illegal argument, style > SWT.CURSOR_HAND (21)
try {
cursor = new Cursor(display, 100);
cursor.dispose();
fail("No exception thrown for style > SWT.CURSOR_HAND (21)");
} catch (IllegalArgumentException e) {
}
// illegal argument, style < 0
try {
cursor = new Cursor(display, -100);
cursor.dispose();
fail("No exception thrown for style < 0");
} catch (IllegalArgumentException e) {
}
}
use of org.eclipse.swt.graphics.Cursor in project eclipse.platform.swt by eclipse.
the class Test_org_eclipse_swt_graphics_Cursor method test_toString.
@Test
public void test_toString() {
Cursor cursor = new Cursor(display, SWT.CURSOR_WAIT);
try {
assertNotNull(cursor.toString());
assertTrue(cursor.toString().length() > 0);
} finally {
cursor.dispose();
}
}
use of org.eclipse.swt.graphics.Cursor in project eclipse.platform.swt by eclipse.
the class AddressBook method save.
private boolean save() {
if (file == null)
return saveAs();
Cursor waitCursor = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
shell.setCursor(waitCursor);
TableItem[] items = table.getItems();
String[] lines = new String[items.length];
for (int i = 0; i < items.length; i++) {
String[] itemText = new String[table.getColumnCount()];
for (int j = 0; j < itemText.length; j++) {
itemText[j] = items[i].getText(j);
}
lines[i] = encodeLine(itemText);
}
try (FileWriter fileWriter = new FileWriter(file.getAbsolutePath(), false)) {
for (String line : lines) {
fileWriter.write(line);
}
} catch (FileNotFoundException e) {
displayError(resAddressBook.getString("File_not_found") + "\n" + file.getName());
return false;
} catch (IOException e) {
displayError(resAddressBook.getString("IO_error_write") + "\n" + file.getName());
return false;
} finally {
shell.setCursor(null);
}
shell.setText(resAddressBook.getString("Title_bar") + file.getName());
isModified = false;
return true;
}
Aggregations