package de.urszeidler.shr5.runtime.ui.widgets; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IPropertyListener; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.wb.swt.ResourceManager; import de.urszeidler.shr5.runtime.ui.widgets.StateMonitorWidget.MonitorType; /* * (c) urs zeidler */ public class SingleStateWidget extends Composite implements MouseListener { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); private IPropertyListener changeListener; private Label statelabel = null; private boolean markt = false; private int size = 12; private int spacing = size/10; private MonitorType type= MonitorType.physical; public SingleStateWidget(Composite parent, int style) { super(parent, style); initialize(); setMarkt(false); } public SingleStateWidget(Composite parent, int style,int size) { super(parent, style); this.size = size; this.spacing = size/10; initialize(); setMarkt(false); } private void initialize() { addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { toolkit.dispose(); } }); toolkit.adapt(this); toolkit.paintBordersFor(this); GridData gridData1 = new GridData(); gridData1.horizontalAlignment = GridData.FILL; gridData1.grabExcessHorizontalSpace = false; gridData1.verticalAlignment = GridData.CENTER; GridData gridData = new GridData(); gridData.heightHint = size; gridData.widthHint = size-1; GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; gridLayout.verticalSpacing = spacing; gridLayout.marginWidth = spacing; gridLayout.marginHeight = spacing; gridLayout.horizontalSpacing = spacing; statelabel = toolkit.createLabel(this, "", SWT.SHADOW_NONE);// new Label(this, SWT.SHADOW_NONE); statelabel.setImage(ResourceManager.getPluginImage("de.urszeidler.shr5.ecp", "images/damage-2.png")); //Statelabel.setText(""); statelabel.setLayoutData(gridData); statelabel.addMouseListener(this); this.setLayout(gridLayout); // setSize(new Point(300, 200)); } /** * @return the markt */ public boolean isMarkt() { return this.markt; } /** * @param markt the markt to set */ public void setMarkt(boolean markt) { String name = type.toString(); if(markt){ statelabel.setImage(ResourceManager.getPluginImage("de.urszeidler.shr5.ecp", "images/damage-"+name+"-1.png")); } else{ statelabel.setImage(ResourceManager.getPluginImage("de.urszeidler.shr5.ecp", "images/damage-"+name+"-2.png")); } this.markt = markt; } @Override public void mouseDoubleClick(MouseEvent e) { if(changeListener!=null) changeListener.propertyChanged(this, 1); } @Override public void mouseDown(MouseEvent e) { } @Override public void mouseUp(MouseEvent e) { } public void setChangeListener(IPropertyListener changeListener) { this.changeListener = changeListener; } public void setType(MonitorType type) { this.type =type; } }