package com.chemhack.jsMolEditor.client.widget; import com.google.gwt.user.client.ui.*; import com.google.gwt.core.client.GWT; import com.chemhack.jsMolEditor.client.resources.MyImageBundle; import com.chemhack.jsMolEditor.client.controller.EditorController; import com.chemhack.jsMolEditor.client.dialog.ImportMolFileDialog; import com.chemhack.jsMolEditor.client.dialog.ExportMolFileDialog; import com.chemhack.jsMolEditor.client.dialog.OptionDialog; import com.chemhack.jsMolEditor.client.listener.ToggleButtonListener; public class TopToolBox extends HorizontalPanel { ToggleDropDownButton tdbBond; ToggleDropDownButton tdbElement; ToggleButtonListener toggleButtonListener; private ToggleButton tbDoubleBond; private ToggleButton tbSingleBond; private ToggleButton tbTripleBond; private ToggleButton tbBenzene; private ToggleButton tbHexagon; private ToggleButton tbPentagon; private ToggleButton tbSquare; private ToggleButton tbTriangle; public TopToolBox(final EditorController controller, final ToggleButtonListener toggleButtonListener) { super(); this.toggleButtonListener = toggleButtonListener; MyImageBundle myImageBundle = (MyImageBundle) GWT.create(MyImageBundle.class); PushButton pbNew = createPushButton(myImageBundle.newSmall(), "New Molecule"); pbNew.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.getMolecule().clear(); controller.refreshView(); } }); this.add(pbNew); PushButton pbOpen = createPushButton(myImageBundle.openSmall(), "Open Mol File"); pbOpen.addClickListener(new ClickListener() { public void onClick(Widget sender) { ImportMolFileDialog importMolFileDialog = new ImportMolFileDialog(controller); importMolFileDialog.center(); importMolFileDialog.show(); } }); this.add(pbOpen); PushButton pbSave = createPushButton(myImageBundle.saveSmall(), "Save Mol File"); pbSave.addClickListener(new ClickListener() { public void onClick(Widget sender) { ExportMolFileDialog exportMolFileDialog = new ExportMolFileDialog(controller); exportMolFileDialog.center(); exportMolFileDialog.show(); } }); this.add(pbSave); this.add(createSpace()); tbSingleBond = createToggleButton(myImageBundle.singleBondSmall(), "Single Bond"); tbSingleBond.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.selectElement("C"); toggleButtonListener.onClick(sender); controller.currentAction = EditorController.EditActions.drawSingleBond; } }); tbSingleBond.setDown(true); this.add(tbSingleBond); tbDoubleBond = createToggleButton(myImageBundle.doubleBondSmall(), "Double Bond"); tbDoubleBond.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.selectElement("C"); toggleButtonListener.onClick(sender); controller.currentAction = EditorController.EditActions.drawDoubleBond; } }); this.add(tbDoubleBond); tbTripleBond = createToggleButton(myImageBundle.tripleBondSmall(), "Triple Bond"); tbTripleBond.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.selectElement("C"); toggleButtonListener.onClick(sender); controller.currentAction = EditorController.EditActions.drawTrippleBond; } }); this.add(tbTripleBond); this.add(createSpace()); tbTriangle = createToggleButton(myImageBundle.triangleSmall(), "Triangle"); tbTriangle.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.drawRing; controller.currentRingSize = 3; } }); this.add(tbTriangle); tbSquare = createToggleButton(myImageBundle.squareSmall(), "Square"); tbSquare.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.drawRing; controller.currentRingSize = 4; } }); this.add(tbSquare); tbPentagon = createToggleButton(myImageBundle.pentagonSmall(), "Pentagon"); tbPentagon.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.drawRing; controller.currentRingSize = 5; } }); this.add(tbPentagon); tbHexagon = createToggleButton(myImageBundle.hexagonSmall(), "Hexagon"); tbHexagon.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.drawRing; controller.currentRingSize = 6; } }); this.add(tbHexagon); tbBenzene = createToggleButton(myImageBundle.benzeneSmall(), "Benzene"); tbBenzene.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.drawBenzene; controller.currentRingSize = 6; } }); this.add(tbBenzene); // tdbBond = new ToggleDropDownButton(); // tdbBond.addOption(myImageBundle.singleBondSmall().createImage(), "Singel Bond", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawSingeBond; // } // }); // tdbBond.addOption(myImageBundle.doubleBondSmall().createImage(), "Double Bond", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawDoubleBond; // } // }); // tdbBond.addOption(myImageBundle.tripleBondSmall().createImage(), "Triple Bond", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawTrippleBond; // } // }); // tdbBond.setSelectedIndex(0); // tdbBond.setUpAllToggle(upAllToggle); // tdbBond.setDown(true); // this.add(tdbBond); // // // this.add(createSpace(3)); // tdbElement = new ToggleDropDownButton(); // tdbElement.addOption(myImageBundle.elementCSmall().createImage(), "Element C", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawAtom; // controller.currentElement = "C"; // } // }); // tdbElement.addOption(myImageBundle.elementNSmall().createImage(), "Element N", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawAtom; // controller.currentElement = "N"; // } // }); // tdbElement.addOption(myImageBundle.elementOSmall().createImage(), "Element O", new ClickListener() { // public void onClick(Widget sender) { // controller.currentAction = EditorController.EditActions.drawAtom; // controller.currentElement = "O"; // } // }); // tdbElement.setSelectedIndex(0); // tdbElement.setUpAllToggle(upAllToggle); // this.add(tdbElement); this.add(createSpace()); ToggleButton tbMove = createToggleButton(myImageBundle.moveSmall(), "Move Atom"); tbMove.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.moveAtom; } }); this.add(tbMove); ToggleButton tbEraser = createToggleButton(myImageBundle.eraserSmall(), "Eraser"); tbEraser.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.currentAction = EditorController.EditActions.eraser; } }); this.add(tbEraser); this.add(createSpace()); PushButton pbZoomIn = createPushButton(myImageBundle.zoomInSmall(), "Zoom In"); pbZoomIn.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.zoomInOut(1.2); } }); this.add(pbZoomIn); PushButton pbZoomOut = createPushButton(myImageBundle.zoomOutSmall(), "Zoom Out"); pbZoomOut.addClickListener(new ClickListener() { public void onClick(Widget sender) { controller.zoomInOut(0.8); } }); this.add(pbZoomOut); this.add(createSpace()); PushButton tbOptions = createPushButton(myImageBundle.optionsSmall(), "Options"); tbOptions.addClickListener(new ClickListener() { public void onClick(Widget sender) { OptionDialog optionDialog = new OptionDialog(controller); optionDialog.center(); optionDialog.show(); } }); this.add(tbOptions); // selectButton(tbSingleBond); // ToggleButton tbMove = new ToggleButton(myImageBundle.moveSmall().createImage()); // tbTripleBond.addClickListener(new ClickListener(){ // public void onClick(Widget sender) { // // } // }); // // this.add(tbMove); } private ToggleButton createToggleButton(AbstractImagePrototype imagePrototype, String tittle) { ToggleButton toggleButton = new ToggleButton(imagePrototype.createImage()); toggleButton.setTitle(tittle); toggleButton.setStylePrimaryName("jsmoleditor-toolButton"); toggleButton.addClickListener(toggleButtonListener); toggleButtonListener.addToggleButton(toggleButton); return toggleButton; } private PushButton createPushButton(AbstractImagePrototype imagePrototype, String tittle) { PushButton pushButton = new PushButton(imagePrototype.createImage()); pushButton.setTitle(tittle); pushButton.setStylePrimaryName("jsmoleditor-toolButton"); return pushButton; } private SimplePanel createSpace() { SimplePanel space = new SimplePanel(); space.setStyleName("jsmoleditor-toolBoxSeprator"); return space; } public void setSelectedAction(EditorController.EditActions action) { switch (action) { case drawSingleBond: toggleButtonListener.onClick(tbSingleBond); break; case drawDoubleBond: toggleButtonListener.onClick(tbDoubleBond); break; case drawTrippleBond: toggleButtonListener.onClick(tbTripleBond); break; } } public void setSelectedAction(EditorController.EditActions action, int ringSize) { switch (action) { case drawRing: switch (ringSize) { case 3: toggleButtonListener.onClick(tbTriangle); break; case 4: toggleButtonListener.onClick(tbSquare); break; case 5: toggleButtonListener.onClick(tbPentagon); break; case 6: toggleButtonListener.onClick(tbHexagon); break; } break; case drawBenzene: toggleButtonListener.onClick(tbBenzene); break; } } }