package fi.vtt.simantics.processeditor.tools; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.simantics.db.Graph; import org.simantics.db.Resource; import org.simantics.proconf.g3d.actions.ContextAction; import org.simantics.proconf.g3d.base.EditorContribution; import org.simantics.proconf.g3d.base.ThreeDimensionalEditorBase; import org.simantics.proconf.g3d.common.StructuredResourceSelection; import fi.vtt.simantics.processeditor.ProcessResource; public class NozzleContribution implements EditorContribution { private List actions = new ArrayList(); private ThreeDimensionalEditorBase parent; private Resource equipmentResource; private Composite sideComposite; public NozzleContribution(ThreeDimensionalEditorBase parent) { this.parent = parent; } @Override public void createControl(Composite parent) { FormLayout flayout = new FormLayout(); parent.setLayout(flayout); sideComposite = new Composite(parent,SWT.BORDER); FormData data = new FormData(); data.top = new FormAttachment(0, 0); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(sideComposite, 0, SWT.LEFT); data.bottom = new FormAttachment(100,0); this.parent.getRenderingComposite().setLayoutData(data); sideComposite.setLayout(new FillLayout(SWT.VERTICAL)); data = new FormData(); data.top = new FormAttachment(0, 0); data.bottom = new FormAttachment(100,0); data.right = new FormAttachment(100,0); sideComposite.setLayoutData(data); showNozzles(true); Button addButton = new Button(sideComposite,SWT.PUSH); addButton.setText("Add Nozzle"); Label label = new Label(sideComposite,SWT.NONE); label.setText("Restrictions:"); Button minButton = new Button(sideComposite,SWT.CHECK); minButton.setText("Min"); Text minText = new Text(sideComposite,SWT.SINGLE | SWT.BORDER); Button maxButton = new Button(sideComposite,SWT.CHECK); maxButton.setText("Max"); Text maxText = new Text(sideComposite,SWT.SINGLE | SWT.BORDER); minText.setToolTipText("Enter minimum number of nozzles"); maxText.setToolTipText("Enter maximum number of nozzles"); } @Override public void disposeControl() { sideComposite.dispose(); } @Override public void fillContextMenu(Graph graph, IMenuManager manager, StructuredResourceSelection selection) { } @Override public void fillLocalPullDown(IMenuManager manager) { } @Override public void fillLocalToolBar(IToolBarManager manager) { } @Override public Collection getActions() { return actions; } @Override public String getName() { return "Nozzles"; } private void showNozzles(boolean show) { } @Override public void initialize(Graph graph) { Resource modelResource = parent.getInputResource(); Resource inverse = graph.getInverse(ProcessResource.plant3Dresource.HasGraphics); Collection equipment = graph.getObjects(modelResource, inverse); if (equipment.size() != 1) throw new RuntimeException("Cannot find equipment"); equipmentResource = equipment.iterator().next(); } @Override public void dispose() { showNozzles(false); } @Override public void run() { } }