From f78dd18c66d607b693c0bf5937fc59181bf5a26b Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 26 Jun 2019 20:39:14 -0400 Subject: [PATCH] Fix multiple selection --- ObjEditor.java | 22 +++++++++-- icons/Media_player_icons-04-512.png | 0 /dev/null | 0 CameraPane.java | 5 ++ GroupEditor.java | 52 ++++++++++++++++---------- cTree.java | 6 ++ Grid.java | 2 icons/flash-light.png | 0 Object3D.java | 2 + icons/controls.png | 0 icons/remove.png | 0 11 files changed, 63 insertions(+), 26 deletions(-) diff --git a/CameraPane.java b/CameraPane.java index b2db6b7..88a2741 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -16783,6 +16783,11 @@ //System.out.println("objects[color] = " + objects[color]); //objects[color].Select(); indexcount = 0; + ObjEditor window = object.GetWindow(); + if (window != null && deselect) + { + window.Select(null, deselect, true); + } object.Select(color, deselect); } diff --git a/Grid.java b/Grid.java index 1780c12..e8b144a 100644 --- a/Grid.java +++ b/Grid.java @@ -64,7 +64,7 @@ Vertex biparamFunction(double u, double v) { - Vertex temp = new Vertex((2*v-1)*radius*8, 0 /*-radius,*/, (2*u-1)*radius*8); + Vertex temp = new Vertex((2*v-1)*radius*4, 0 /*-radius,*/, (2*u-1)*radius*4); temp.norm = LA.newVector(0,1,0); return temp; } diff --git a/GroupEditor.java b/GroupEditor.java index 502ff05..aa482be 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -758,16 +758,16 @@ } // EDIT panel - editCommandsPanel.add(editButton = new cButton("+", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - editButton.setToolTipText("Edit selection"); + editCommandsPanel.add(editButton = GetButton("icons/controls.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + editButton.setToolTipText("Pin selection controls"); editButton.addActionListener(this); - editCommandsPanel.add(uneditButton = new cButton("-", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - uneditButton.setToolTipText("Unedit selection"); + editCommandsPanel.add(uneditButton = GetButton("icons/remove.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + uneditButton.setToolTipText("Remove selection controls"); uneditButton.addActionListener(this); editCommandsPanel.add(allParamsButton = new JCheckBox("All", allparams)); //, oe.aConstraints); - allParamsButton.setToolTipText("Edit all params"); + allParamsButton.setToolTipText("Show all controle"); allParamsButton.addActionListener(this); editCommandsPanel.add(clearPanelButton = new cButton("C", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); @@ -784,6 +784,7 @@ editCommandsPanel.preferredHeight = 1; + SetPinStates(false); // oe.treePanel.add(commandsPanel); // oe.treePanel.Return(); @@ -857,7 +858,7 @@ boxCB.addItemListener(this); panel.add(zoomBoxCB = new cCheckBox("Zoom", CameraPane.ZOOMBOXMODE)); //, constraints); - zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel"); + zoomBoxCB.setToolTipText("Display only for wheel"); zoomBoxCB.addItemListener(this); if (true) // Globals.ADVANCED) @@ -919,7 +920,7 @@ oeilCB.addItemListener(this); panel.add(shadowCB = new cCheckBox("Shadow", Globals.COMPUTESHADOWWHENLIVE)); //, constraints); - shadowCB.setToolTipText("Compute shadows when live"); + shadowCB.setToolTipText("When live compute shadows"); shadowCB.addItemListener(this); panel.Return(); @@ -932,7 +933,7 @@ toggleSwitchCB.addItemListener(this); panel.add(autosaveCB = new cCheckBox("Auto-save", Globals.SAVEONMAKE)); //, constraints); - autosaveCB.setToolTipText("Auto-save on structure change"); + autosaveCB.setToolTipText("On structure change"); autosaveCB.addItemListener(this); panel.Return(); @@ -1628,6 +1629,20 @@ makeSomething(shadow); } + + private void ClearUnpinned() + { + //for (Object3D obj : listUI) + for (int i=listUI.size(); --i>=0;) + { + Object3D obj = listUI.elementAt(i); + if (!obj.pinned) + { + obj.CloseUI(); + listUI.remove(i); + } + } + } /** * applyExample @@ -3372,7 +3387,7 @@ //copy.ClearUI(); for (Object3D obj : listUI) { - obj.pinned = true; + obj.pinned = false; obj.CloseUI(); } listUI.clear(); @@ -3457,6 +3472,11 @@ currentLayout = sevenButton; */ radio.layout.doClick(); + + ClearUnpinned(); + SetPinStates(group.selection.size() > 0); + if (group.selection.size() == 1) + EditSelection(false); keepparent = group.parent; // PARENT = NULL or not??? //group.parent = null; // ROOT @@ -4616,17 +4636,7 @@ //new Exception().printStackTrace(); freezemodel = true; - - //for (Object3D obj : listUI) - for (int i=listUI.size(); --i>=0;) - { - Object3D obj = listUI.elementAt(i); - if (!obj.pinned) - { - obj.CloseUI(); - listUI.remove(i); - } - } + ClearUnpinned(); /**/ //switch (event.id) @@ -4689,6 +4699,8 @@ { editButton.setEnabled(enabled); uneditButton.setEnabled(enabled); + unselectButton.setEnabled(enabled); + flashSelectionButton.setEnabled(enabled); } void refreshContents(boolean cp) diff --git a/ObjEditor.java b/ObjEditor.java index d10d05b..ef7c93d 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -15,6 +15,9 @@ //import javax.swing.plaf.ColorUIResource; //import javax.swing.plaf.metal.DefaultMetalTheme; +import javax.swing.plaf.basic.BasicSplitPaneDivider; +import javax.swing.plaf.basic.BasicSplitPaneUI; + //import javax.media.opengl.GLCanvas; import //weka.core. @@ -458,7 +461,13 @@ mainPanel.setDividerSize(9); mainPanel.setDividerLocation(0.5); //1.0); mainPanel.setResizeWeight(0.5); - + +//mainPanel.setDividerSize((int) (mainPanel.getDividerSize() * 1.5)); +// BasicSplitPaneDivider divider = ( (BasicSplitPaneUI) mainPanel.getUI()).getDivider(); +// divider.setDividerSize(15); +// divider.setBorder(BorderFactory.createTitledBorder(divider.getBorder(), "Custom border title -- gets rid of the one-touch arrows!")); + + //ctrlPanel.setLayout(new GridLayout(4, 1, 5, 5)); //mainPanel.setLayout(new GridBagLayout()); toolbarPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); @@ -1125,7 +1134,7 @@ hideCB = AddCheckBox(setupPanel, "Hide", copy.hide); hideCB.setToolTipText("Hide object"); markCB = AddCheckBox(setupPanel, "Mark", copy.marked); - markCB.setToolTipText("Set the animation target transform"); + markCB.setToolTipText("As animation target transform"); setupPanel2 = new cGridBag().setVertical(false); @@ -1133,7 +1142,7 @@ rewindCB.setToolTipText("Rewind animation"); randomCB = AddCheckBox(setupPanel2, "Rand", copy.random); - randomCB.setToolTipText("Randomly Rewind or Go back and forth"); + randomCB.setToolTipText("Randomly Rewind (or Go back and forth)"); if (Globals.ADVANCED) { @@ -3017,12 +3026,17 @@ // } /**/ - if (deselect) + if (deselect || child == null) { //group.deselectAll(); //freeze = true; GetTree().clearSelection(); //freeze = false; + + if (child == null) + { + return; + } } //group.addSelectee(child); diff --git a/Object3D.java b/Object3D.java index e829908..355ed54 100644 --- a/Object3D.java +++ b/Object3D.java @@ -5043,6 +5043,7 @@ if (child == null) continue; + if (child.HasTransparency() && child.size() != 0) { cTreePath leaf = child.Select(indexcount, deselect); @@ -5929,6 +5930,7 @@ if (GetBRep() != null) { display.NextIndex(); + // vertex color conflict : gl.glCallList(list); DrawNode(display, root, selected); if (this instanceof BezierPatch) diff --git a/cTree.java b/cTree.java index 2632e2b..405e4e2 100644 --- a/cTree.java +++ b/cTree.java @@ -20,7 +20,11 @@ { public void mousePressed(MouseEvent e) { - if (e.isPopupTrigger()) { + if (e.isPopupTrigger()) + { + int row = getClosestRowForLocation(e.getX(), e.getY()); + if (!isRowSelected(row)) + setSelectionRow(row); popup.show((JComponent) e.getSource(), e.getX(), e.getY()); } } diff --git a/icons/Media_player_icons-04-512.png b/icons/Media_player_icons-04-512.png new file mode 100644 index 0000000..a90effd --- /dev/null +++ b/icons/Media_player_icons-04-512.png Binary files differ diff --git a/icons/controls.png b/icons/controls.png new file mode 100644 index 0000000..bdb146e --- /dev/null +++ b/icons/controls.png Binary files differ diff --git a/icons/flash-light.png b/icons/flash-light.png index 81ba154..d2ee190 100644 --- a/icons/flash-light.png +++ b/icons/flash-light.png Binary files differ diff --git a/icons/loop0.png b/icons/loop0.png deleted file mode 100644 index 1bd548e..0000000 --- a/icons/loop0.png +++ /dev/null Binary files differ diff --git a/icons/particles0.png b/icons/particles0.png deleted file mode 100644 index 62fcd6c..0000000 --- a/icons/particles0.png +++ /dev/null Binary files differ diff --git a/icons/remove.png b/icons/remove.png new file mode 100644 index 0000000..5ccc7b2 --- /dev/null +++ b/icons/remove.png Binary files differ -- Gitblit v1.6.2