[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/tool SpaceTool.java, 1.60, 1.61
Status: Pre-Alpha
Brought to you by:
henryml
From: rimestad <rim...@us...> - 2006-10-30 10:34:36
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv25137/src/net/sourceforge/bprocessor/gl/tool Modified Files: SpaceTool.java Log Message: refactored cylinder out of SpaceTool and changede som mouse checks to use isPopuptrigger instead of third button and isctrlpressed. THERE ARE SOME PROBLEMS ON MAC IF RIGHT CLICK IS ACHIEVED WITH CTRL MODIFIER BUT EXTERNAL MOUSE SHOULD BE USED NOT A TRACKPAD. Index: SpaceTool.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/SpaceTool.java,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** SpaceTool.java 27 Oct 2006 06:58:29 -0000 1.60 --- SpaceTool.java 30 Oct 2006 10:34:27 -0000 1.61 *************** *** 16,20 **** import java.io.StringReader; import java.util.ArrayList; - import java.util.Arrays; import java.util.Collection; import java.util.HashMap; --- 16,19 ---- *************** *** 23,27 **** import java.util.LinkedList; import java.util.List; - import java.util.Map; import java.util.Stack; --- 22,25 ---- *************** *** 35,40 **** --- 33,40 ---- import net.sourceforge.bprocessor.model.AxisRotate; import net.sourceforge.bprocessor.gui.PopupMenu; + import net.sourceforge.bprocessor.gui.actions.SpaceMenuAction; import net.sourceforge.bprocessor.model.ClippingPlane; import net.sourceforge.bprocessor.model.Constructor; + import net.sourceforge.bprocessor.model.Cylinder; import net.sourceforge.bprocessor.model.Edge; import net.sourceforge.bprocessor.model.Entity; *************** *** 50,54 **** import net.sourceforge.bprocessor.model.Vertex; import net.sourceforge.bprocessor.model.Geometry; - import net.sourceforge.bprocessor.model.constraints.OffsetConstraint; import net.sourceforge.bprocessor.model.evaluator.Environment; import net.sourceforge.bprocessor.model.evaluator.Function; --- 50,53 ---- *************** *** 91,94 **** --- 90,99 ---- findTarget(e); boolean done = false; + + if (e.isPopupTrigger()) { + glv.popup(makeSelectionMenu(), e.getX(), e.getY()); + done = true; + } + if (e.getButton() == MouseEvent.BUTTON1) { if (target != null) { *************** *** 100,109 **** } } - - if (e.getButton() == MouseEvent.BUTTON3 || e.isControlDown()) { - glv.popup(makeSelectionMenu(), e.getX(), e.getY()); - done = true; - } - if (!done) { super.pressed(e); --- 105,108 ---- *************** *** 118,137 **** /** - * SpaceAction for making actions on spaces - */ - protected abstract class SpaceAction extends MenuAction { - /** The space to operate on */ - protected Space space; - - /** - * Constructor - * @param space The space to operate on - */ - public SpaceAction(Space space) { - this.space = space; - } - } - - /** * MenuAction for making layers on spaces */ --- 117,120 ---- *************** *** 200,215 **** } else if (target instanceof Space) { return PopupMenu.getSpaceMenu((Space)target); } else if (target instanceof Entity) { ! JPopupMenu menu = PopupMenu.getEntityMenu((Entity) target); ! ! JMenuItem offsetItem = new JMenuItem("Offset Constraint"); ! offsetItem.addActionListener(new MenuAction() { ! public void actionPerformed(ActionEvent event) { ! addOffsetConstraint(Selection.primary()); ! } ! } ! ); ! menu.add(offsetItem); ! return menu; } else { return null; --- 183,190 ---- } else if (target instanceof Space) { return PopupMenu.getSpaceMenu((Space)target); + } else if (target instanceof Surface) { + return PopupMenu.getSurfaceMenu((Surface) target); } else if (target instanceof Entity) { ! return PopupMenu.getEntityMenu((Entity) target); } else { return null; *************** *** 217,397 **** } else { Iterator sel = Selection.primary().iterator(); ! Collection entities = new LinkedList(); while (sel.hasNext()) { Object next = sel.next(); ! if (Selection.primary().size() == 1) { ! if (next instanceof Space) { ! return PopupMenu.getSpaceMenu((Space)next); ! } else { ! return PopupMenu.getEntityMenu((Entity)next); ! } } else { ! entities.add(next); } } ! return PopupMenu.getEntiesMenu(entities); ! } ! } ! ! /** ! * Add offset constraint to objects ! * @param objects The objects ! */ ! protected void addOffsetConstraint(Collection objects) { ! if (objects.size() == 2) { ! Iterator iter = objects.iterator(); ! Object arg1 = iter.next(); ! Object arg2 = iter.next(); ! Surface master = null; ! Surface slave = null; ! if (arg1 instanceof Surface) { ! master = (Surface) arg1; ! } ! if (arg2 instanceof Surface) { ! slave = (Surface) arg2; ! } ! if (master != null && slave != null) { ! OffsetConstraint constraint = new OffsetConstraint(master, slave); ! Project.getInstance().add(constraint); ! } ! } ! } ! ! /** ! * The cylinder class parametrically generates a cylinder. ! */ ! public class Cylinder extends Modellor { ! ! /** Default */ ! private static final long serialVersionUID = 1L; ! ! /** radius */ ! private double radius = 1.0; ! ! /** height */ ! private double height = 1.0; ! ! /** axis divisions */ ! private int axisDivisions = 12; ! ! /*** ! * Generate a Cylinder ! * @param entity Changed entity ! */ ! public void update(Object entity) { ! /** Origin */ ! Vertex o = new Vertex(0, 0, 0); ! /** Bottom vertices */ ! Vertex[] bv = new Vertex[axisDivisions]; ! /** Top vertices */ ! Vertex[] tv = new Vertex[axisDivisions]; ! /** Bottom edges */ ! Edge[] be = new Edge[axisDivisions]; ! /** Top edges */ ! Edge te[] = new Edge[axisDivisions]; ! /** Side edges */ ! Edge se[] = new Edge[axisDivisions]; ! /** Side faces */ ! Surface sf[] = new Surface[axisDivisions]; ! ! Surface top; ! Surface bottom; ! Space space = Project.getInstance().world(); ! ! for (int i = 0; i < axisDivisions; i++) { ! double angle = ((2 * Math.PI) * i) / (double) axisDivisions; ! double x = radius * Math.cos(angle) + o.getX(); ! double y = radius * Math.sin(angle) + o.getY(); ! double z = o.getZ(); ! bv[i] = new Vertex(x, y, z); ! tv[i] = new Vertex(x, y, z + height); ! space.add(bv[i]); ! space.add(tv[i]); ! } ! ! for (int i = 0; i < axisDivisions; i++) { ! be[i] = new Edge(bv[i], bv[(i + 1) % axisDivisions]); ! space.add(be[i]); ! } ! ! for (int i = 0; i < axisDivisions; i++) { ! te[i] = new Edge(tv[i], tv[(i + 1) % axisDivisions]); ! space.add(te[i]); ! } ! ! for (int i = 0; i < axisDivisions; i++) { ! se[i] = new Edge(bv[i], tv[i]); ! space.add(se[i]); ! } ! ! for (int i = 0; i < axisDivisions; i++) { ! List edges = new LinkedList(); ! edges.add(be[i]); ! edges.add(se[(i + 1) % axisDivisions]); ! edges.add(te[i]); ! edges.add(se[i]); ! sf[i] = new Surface(edges); ! space.add(sf[i]); ! } ! { ! List edges = new LinkedList(Arrays.asList(be)); ! bottom = new Surface(edges); ! space.add(bottom); ! } ! { ! List edges = new LinkedList(Arrays.asList(te)); ! top = new Surface(edges); ! space.add(top); } } - - /** - * Return null for center - * @return Center - */ - public Vertex center() { - return null; - } - - /** - * FIXME: empty implementation to make compile - * (pfff make sure stuff compiles before you check in please) - */ - public void delete() { - return; - } - - /** @see net.sourceforge.bprocessor.model.Parametric#setAttributes(List) */ - public void setAttributes(List attributes) { - // TODO Auto-generated method stub - } - - /** @see net.sourceforge.bprocessor.model.Parametric#getGeneralName() */ - public List getAttributes() { - // TODO Auto-generated method stub - return null; - } - - /** @see net.sourceforge.bprocessor.model.modellor.Modellor#newInstance(Space) */ - public Modellor newInstance(Space s) { - // TODO Auto-generated method stub - return null; - } - - /** @see net.sourceforge.bprocessor.model.modellor.Modellor#setContent(Map) */ - public void setContent(Map m) { - axisDivisions = ((Integer)m.get("Axis")).intValue(); - height = ((Double)m.get("Height")).doubleValue(); - radius = ((Double)m.get("Radius")).doubleValue(); - } - - /** @see net.sourceforge.bprocessor.model.modellor.Modellor#getContent() */ - public Map getContent() { - Map m = new HashMap(); - m.put("Axis", new Integer(axisDivisions)); - m.put("Height", new Double(height)); - m.put("Radius", new Double(radius)); - return m; - } } --- 192,215 ---- } else { Iterator sel = Selection.primary().iterator(); ! Class type = null; while (sel.hasNext()) { Object next = sel.next(); ! if (type == null) { ! type = next.getClass(); ! } else if (type == next.getClass()) { ! // do nothing just continue; ! continue; } else { ! return PopupMenu.getEntiesMenu(Selection.primary()); } } ! if (type.getSimpleName().equals("Space")) { ! return PopupMenu.getSpaceMenu(Selection.primary()); ! } else if (type.getSimpleName().equals("Surface")) { ! return PopupMenu.getSurfaceMenu(Selection.primary()); ! } else { ! return PopupMenu.getEntiesMenu(Selection.primary()); } } } *************** *** 524,528 **** if (space.isContainer()) { editSpaceItem = new JMenuItem("Edit " + category); ! editSpaceItem.addActionListener(new SpaceAction(space) { public void actionPerformed(ActionEvent arg0) { if (space != null) { --- 342,346 ---- if (space.isContainer()) { editSpaceItem = new JMenuItem("Edit " + category); ! editSpaceItem.addActionListener(new SpaceMenuAction(space, "Edit") { public void actionPerformed(ActionEvent arg0) { if (space != null) { *************** *** 535,539 **** } JMenuItem copySpaceItem = new JMenuItem("Duplicate " + category); ! copySpaceItem.addActionListener(new SpaceAction(space) { public void actionPerformed(ActionEvent arg0) { if (space != null) { --- 353,357 ---- } JMenuItem copySpaceItem = new JMenuItem("Duplicate " + category); ! copySpaceItem.addActionListener(new SpaceMenuAction(space, "Duplicate") { public void actionPerformed(ActionEvent arg0) { if (space != null) { *************** *** 546,550 **** JMenuItem flipSpaceItem = new JMenuItem("Rotate " + category + " 90 degrees CCW"); ! flipSpaceItem.addActionListener(new SpaceAction(space) { public void actionPerformed(ActionEvent arg0) { if (space != null) { --- 364,368 ---- JMenuItem flipSpaceItem = new JMenuItem("Rotate " + category + " 90 degrees CCW"); ! flipSpaceItem.addActionListener(new SpaceMenuAction(space, "Rotate") { public void actionPerformed(ActionEvent arg0) { if (space != null) { *************** *** 590,599 **** menu.add(constMenu); menu.addSeparator(); ! //menu.add(voidItem); ! menu.add(copySpaceItem); ! if (editSpaceItem != null) { ! menu.add(editSpaceItem); } - menu.add(flipSpaceItem); menu.addPopupMenuListener(spl); menu.pack(); --- 408,419 ---- menu.add(constMenu); menu.addSeparator(); ! if (space != ((Space)space.parent()).getEmpty()) { ! menu.add(voidItem); ! menu.add(copySpaceItem); ! if (editSpaceItem != null) { ! menu.add(editSpaceItem); ! } ! menu.add(flipSpaceItem); } menu.addPopupMenuListener(spl); menu.pack(); |