From: <gu...@us...> - 2011-07-28 21:04:19
|
Revision: 15875 http://jmol.svn.sourceforge.net/jmol/?rev=15875&view=rev Author: gutow Date: 2011-07-28 21:04:12 +0000 (Thu, 28 Jul 2011) Log Message: ----------- Rearrangement of Surface Tool layout. Added capping to Surface Tool. Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceTool.java trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceToolGUI.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2011-07-28 18:03:13 UTC (rev 15874) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2011-07-28 21:04:12 UTC (rev 15875) @@ -5,6 +5,7 @@ # RELEASE CANDIDATE 1 for Jmol 12.2 +# new feature: Surface Tool now does capping. Surface Tool layout rearrangement. # bug fix: H atom attachment fixed at 1.1 Angstroms, which is fine for C, but # a bit high for O,N (1.0) and low for third row (1.3) # bug fix: isosurface parameters @x does not work even when x is an array Modified: trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceTool.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceTool.java 2011-07-28 18:03:13 UTC (rev 15874) +++ trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceTool.java 2011-07-28 21:04:12 UTC (rev 15875) @@ -116,7 +116,7 @@ //Boundbox used by SurfaceTool to encompass these. box = checkMeshBB(shapes,JmolConstants.SHAPE_ISOSURFACE, box); box = checkMeshBB(shapes,JmolConstants.SHAPE_PMESH, box); - //TODO MOs...script parser doesn't treat them as isosurfaces... + //TODO // box = checkMeshBB(shapes,JmolConstants.SHAPE_MO, box); if (box!=null){ center.set(box.getBoundBoxCenter()); @@ -173,6 +173,7 @@ surfaceKind.clear(); updateMeshInfo(shapes,JmolConstants.SHAPE_ISOSURFACE); updateMeshInfo(shapes,JmolConstants.SHAPE_PMESH); + //TODO // updateMeshInfo(shapes,JmolConstants.SHAPE_MO); } @@ -229,6 +230,7 @@ private boolean lefton = false; private boolean righton = false; private boolean ghoston = false; + private boolean capon = false; private boolean useMolecular = false; private boolean usePercent = false; @@ -381,6 +383,9 @@ case JmolConstants.SHAPE_PMESH: cmdStart = "pmesh"; break; + case JmolConstants.SHAPE_MO: + cmdStart = "mo"; + break; } String ghostStr = (ghoston ? "translucent 0.8 mesh " : ""); // String cmd = "isosurface " + objectName + " off;"; @@ -400,8 +405,9 @@ return; } - private static void getSlabOption(StringBuffer cmd, String prefix, Point4f plane) { - cmd.append(" slab ").append(prefix).append(Escape.escape(plane)); + private void getSlabOption(StringBuffer cmd, String prefix, Point4f plane) { + String slabCapStr = (capon ? " cap ":" slab "); + cmd.append(slabCapStr).append(prefix).append(Escape.escape(plane)); } private void drawSlicePlane(StringBuffer cmd, int side, @@ -486,4 +492,12 @@ String[] getAngleUnitsList(){ return angleUnitsList; } + + boolean getCapOn() { + return capon; + } + + void setCapOn(boolean b){ + capon = b; + } } Modified: trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceToolGUI.java =================================================================== --- trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceToolGUI.java 2011-07-28 18:03:13 UTC (rev 15874) +++ trunk/Jmol/src/org/openscience/jmol/app/surfacetool/SurfaceToolGUI.java 2011-07-28 21:04:12 UTC (rev 15875) @@ -72,12 +72,14 @@ private JFrame slicerFrame; private SurfaceTool slicer; private JPanel objectsPanel; - private JPanel unitsPanel; + private JPanel topPanel; private JPanel angleUnitsPanel; private JComboBox angleUnitsList; private JPanel originPanel; private JRadioButton viewCenterButton; private JRadioButton absoluteButton; + private JCheckBox capCheck; + private JPanel capPlanesPanel; private JPanel ghostPanel; private JCheckBox ghostCheck; private JCheckBox boundaryPlaneCheck; @@ -131,17 +133,8 @@ //Create and set up the content pane. setOpaque(true); //content panes must be opaque - //Units panel - unitsPanel = new JPanel(new GridLayout(1, 0)); - angleUnitsPanel = new JPanel(new GridLayout(0, 1)); - String [] angleUnits = slicer.getAngleUnitsList(); - angleUnitsList = new JComboBox(angleUnits); - angleUnitsList.setSelectedIndex(slicer.getAngleUnits()); - angleUnitsList.addActionListener(this); - angleUnitsPanel.add(angleUnitsList); - angleUnitsPanel - .setBorder(BorderFactory.createTitledBorder(GT._("Angle Units"))); - + //Top panel + topPanel = new JPanel(new GridLayout(1, 0)); whichOrigin = new ButtonGroup(); originPanel = new JPanel(new GridLayout(0, 1)); if (slicer.getUseMolecular()) { @@ -159,29 +152,50 @@ originPanel.add(absoluteButton); originPanel.setBorder(BorderFactory.createTitledBorder(GT._("Origin"))); + capPlanesPanel = new JPanel(new GridLayout(0,1)); + capCheck = new JCheckBox(GT._("Cap")); + capCheck.setToolTipText(GT._("Caps slice with opaque surfaces.")); + capCheck.setSelected(slicer.getCapOn()); + capCheck.addActionListener(this); + capPlanesPanel.add(capCheck); + boundaryPlaneCheck = new JCheckBox(GT._("Slice Planes")); + boundaryPlaneCheck.setToolTipText(GT._("Shows planes at slicing surfaces.")); + boundaryPlaneCheck.setSelected(false); + slicer.showSliceBoundaryPlanes(false); + boundaryPlaneCheck.addActionListener(this); + capPlanesPanel.add(boundaryPlaneCheck); + + ghostPanel = new JPanel(new GridLayout(0, 1)); ghostCheck = new JCheckBox(GT._("Ghost On")); ghostCheck.setSelected(slicer.getGhoston()); ghostCheck.addActionListener(this); - boundaryPlaneCheck = new JCheckBox(GT._("Slice Planes")); - boundaryPlaneCheck.setSelected(false); - slicer.showSliceBoundaryPlanes(false); - boundaryPlaneCheck.addActionListener(this); + ghostCheck.setToolTipText(GT._("Shows an unsliced \"ghost\".")); ghostPanel.add(ghostCheck); - ghostPanel.add(boundaryPlaneCheck); - unitsPanel.add(angleUnitsPanel); - unitsPanel.add(originPanel); - unitsPanel.add(ghostPanel); - unitsPanel.setSize(200, 40); + topPanel.add(originPanel); + topPanel.add(capPlanesPanel); + topPanel.add(ghostPanel); + topPanel.setSize(200, 40); //slider panel sliderPanel = new JPanel(new GridLayout(0, 1)); normAnglePanel = new JPanel(new GridLayout(0, 1)); + angleUnitsPanel = new JPanel(new BorderLayout()); + JLabel space = new JLabel(" "); + angleUnitsPanel.add(space,BorderLayout.WEST); + String [] angleUnits = slicer.getAngleUnitsList(); + angleUnitsList = new JComboBox(angleUnits); + angleUnitsList.setSelectedIndex(slicer.getAngleUnits()); + angleUnitsList.addActionListener(this); + angleUnitsPanel.add(angleUnitsList,BorderLayout.EAST); + JPanel labelAndUnits = new JPanel(new GridLayout(1,0)); JLabel sliderLabel = new JLabel(GT._("Angle from X-axis in XY plane"), SwingConstants.CENTER); sliderLabel.setAlignmentX(Component.CENTER_ALIGNMENT); - normAnglePanel.add(sliderLabel); + labelAndUnits.add(sliderLabel); + labelAndUnits.add(angleUnitsPanel); + normAnglePanel.add(labelAndUnits); angleXYSlider = new JSlider(0, 180, 0); angleXYSlider.setMajorTickSpacing(30); angleXYSlider.setPaintTicks(true); @@ -230,7 +244,7 @@ objectsPanel = new JPanel(); //add everything - add(unitsPanel, BorderLayout.NORTH); + add(topPanel, BorderLayout.NORTH); add(sliderPanel, BorderLayout.SOUTH); add(objectsPanel, BorderLayout.EAST); @@ -272,6 +286,10 @@ if (e.getSource() == boundaryPlaneCheck) { slicer.showSliceBoundaryPlanes(boundaryPlaneCheck.isSelected()); } + if (e.getSource()==capCheck){ + slicer.setCapOn(capCheck.isSelected()); + slicer.updateSlices(); + } } public void stateChanged(ChangeEvent e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |