1 26 27 package org.nightlabs.editor2d.viewer.action; 28 29 import org.eclipse.swt.SWT; 30 import org.eclipse.swt.events.DisposeEvent; 31 import org.eclipse.swt.events.DisposeListener; 32 import org.eclipse.swt.events.SelectionEvent; 33 import org.eclipse.swt.events.SelectionListener; 34 import org.eclipse.swt.graphics.Color; 35 import org.eclipse.swt.graphics.RGB; 36 import org.eclipse.swt.widgets.Button; 37 import org.eclipse.swt.widgets.ColorDialog; 38 import org.eclipse.swt.widgets.Composite; 39 import org.eclipse.swt.widgets.Control; 40 import org.eclipse.swt.widgets.Display; 41 import org.nightlabs.base.action.AbstractContributionItem; 42 import org.nightlabs.editor2d.viewer.IViewer; 43 import org.nightlabs.editor2d.viewer.ViewerPlugin; 44 45 public class BackgroundContributionItem 46 extends AbstractContributionItem 47 { 48 public static String ID = BackgroundContributionItem.class.getName(); 49 50 public BackgroundContributionItem(IViewer viewer) 51 { 52 super(ID, ViewerPlugin.getResourceString("contribution.background.text")); 53 this.viewer = viewer; 54 bgColor = viewer.getBgColor(); 55 } 56 57 protected IViewer viewer = null; 58 protected Button colorButton = null; 59 protected Color bgColor = null; 60 protected Control createControl(Composite parent) 61 { 62 colorButton = new Button(parent, SWT.NONE); 63 colorButton.setText(getName()); 64 colorButton.setBackground(bgColor); 65 colorButton.addSelectionListener(selectionListener); 66 colorButton.addDisposeListener(disposeListener); 67 return colorButton; 68 } 69 70 protected SelectionListener selectionListener = new SelectionListener() 71 { 72 public void widgetDefaultSelected(SelectionEvent e) { 73 widgetSelected(e); 74 } 75 public void widgetSelected(SelectionEvent e) 76 { 77 ColorDialog colorDialog = new ColorDialog(Display.getCurrent().getActiveShell()); 78 RGB rgb = colorDialog.open(); 79 if (rgb != null) { 80 bgColor.dispose(); 81 bgColor = new Color(Display.getCurrent(), rgb); 82 colorButton.setBackground(bgColor); 83 viewer.setBgColor(bgColor); 84 viewer.updateCanvas(); 85 } 86 } 87 }; 88 89 protected DisposeListener disposeListener = new DisposeListener() 90 { 91 public void widgetDisposed(DisposeEvent e) { 92 bgColor.dispose(); 93 colorButton.removeSelectionListener(selectionListener); 94 } 95 }; 96 97 101 105 } 106 | Popular Tags |