From 914255f70cf047897212839cbf3a6722703f4457 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Mon, 24 Jun 2019 13:19:16 -0400 Subject: [PATCH] Fix manip window + new icons. --- ObjEditor.java | 55 ++++++++++ icons/redo.png | 0 icons/add-128.png | 0 Camera.java | 2 icons/fullscreen.png | 0 icons/fit.png | 0 Mocap.java | 1 icons/step.png | 0 CameraPane.java | 13 +- Globals.java | 2 icons/light-bulb.png | 0 icons/runfast.png | 0 GroupEditor.java | 84 +++++++++------- cFileSystemPane.java | 2 icons/down_arrow.png | 0 Object3D.java | 39 ++++++- cButton.java | 21 ++++ cCheckBox.java | 41 ++++++-- icons/run.png | 0 icons/track.png | 0 icons/undo.png | 0 21 files changed, 200 insertions(+), 60 deletions(-) diff --git a/Camera.java b/Camera.java index f5243d4..be4d200 100644 --- a/Camera.java +++ b/Camera.java @@ -20,7 +20,7 @@ //<-2.2,0.7,-2> and pointed it at <-0.61,0.3,-0.6> // location = LA.newVector(2,0.7,-2); // lookAt = new cVector(0.6,0.3,-0.6); - location = LA.newVector(3,2,2); + location = LA.newVector(6,4,4); lookAt = new cVector(0.0,0.5,0); direction = new cVector(); toParent = LA.newMatrix(); diff --git a/CameraPane.java b/CameraPane.java index 7afdef6..c1f5c9b 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -11459,7 +11459,7 @@ static boolean zoomonce = false; - void CreateSelectedPoint() + static void CreateSelectedPoint() { if (selectedpoint == null) { @@ -14377,7 +14377,8 @@ info.camera = renderCamera; info.x = x; info.y = y; - object.editWindow.copy.doEditDrag(info, (modifiers & MouseEvent.BUTTON3_MASK) != 0); + object.manipWindow.copy + .doEditDrag(info, (modifiers & MouseEvent.BUTTON3_MASK) != 0); } else { if (x < startX) @@ -14541,9 +14542,9 @@ ci.camera = renderCamera; if (!isRenderer) { - ObjEditor editWindow = object.editWindow; - Object3D copy = editWindow.copy; - if (copy.doEditClick(ci, 0)) + //ObjEditor editWindow = object.editWindow; + //Object3D copy = editWindow.copy; + if (object.doEditClick(ci, 0)) { setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } else @@ -16622,6 +16623,8 @@ // System.err.println("view = " + view[8] + " " + view[9] + " " + view[10] + " " + view[11]); // System.err.println("view = " + view[12] + " " + view[13] + " " + view[14] + " " + view[15]); + CreateSelectedPoint(); + // Will fit the mesh !!! selectedpoint.toParent[0][0] = 0.0001; selectedpoint.toParent[1][1] = 0.0001; diff --git a/Globals.java b/Globals.java index 3489016..4eca159 100644 --- a/Globals.java +++ b/Globals.java @@ -10,6 +10,8 @@ public static boolean COMPUTESHADOWWHENLIVE = true; public static boolean RENDERSHADOW = true; + public static boolean SAVEONMAKE = false; // problems when auto-save (works with manual save) + public static boolean MOUSEDRAGGED = false; // Hold on calculation when moving camera diff --git a/GroupEditor.java b/GroupEditor.java index 33acfd4..cce9b1b 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -580,43 +580,43 @@ //minButton.setToolTipText("Minimize window"); //minButton.addActionListener(this); - oe.toolbarPanel.add(maxButton = new cButton("\u271A", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(maxButton = GetButton("icons/add-128.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); maxButton.setToolTipText("Maximize window"); maxButton.addActionListener(this); - oe.toolbarPanel.add(fullButton = new cButton("\u2b1c", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(fullButton = GetButton("icons/fullscreen.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); fullButton.setToolTipText("Full-screen window"); fullButton.addActionListener(this); - oe.toolbarPanel.add(undoButton = new cButton("\u21a9", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(undoButton = GetButton("icons/undo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); undoButton.setToolTipText("Undo changes"); undoButton.addActionListener(this); - oe.toolbarPanel.add(redoButton = new cButton("\u21aa", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(redoButton = GetButton("icons/redo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); redoButton.setToolTipText("Redo changes"); redoButton.addActionListener(this); - oe.toolbarPanel.add(saveButton = new cButton("\u21e3", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(saveButton = GetButton("icons/down_arrow.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); saveButton.setToolTipText("Save changes"); saveButton.addActionListener(this); - oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE())); //, oe.aConstraints); + oe.toolbarPanel.add(liveCB = GetCheckBox("icons/run.png", Globals.isLIVE())); //, oe.aConstraints); liveCB.setToolTipText("Enable animation"); liveCB.addItemListener(this); - oe.toolbarPanel.add(oneStepButton = new cButton("\u29f4", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - oneStepButton.setToolTipText("Animate one step forward"); - oneStepButton.addActionListener(this); - - oe.toolbarPanel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST)); //, constraints); + oe.toolbarPanel.add(fastCB = GetCheckBox("icons/runfast.png", CameraPane.FAST)); //, constraints); fastCB.setToolTipText("Fast mode"); fastCB.addItemListener(this); - oe.toolbarPanel.add(trackCB = new cCheckBox(":", CameraPane.TRACK)); //, oe.aConstraints); + oe.toolbarPanel.add(oneStepButton = GetButton("icons/step.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oneStepButton.setToolTipText("Animate one step forward"); + oneStepButton.addActionListener(this); + + oe.toolbarPanel.add(trackCB = GetCheckBox("icons/track.png", CameraPane.TRACK)); //, oe.aConstraints); trackCB.setToolTipText("Enable tracking"); trackCB.addItemListener(this); - oe.toolbarPanel.add(screenfitButton = new cButton("@", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + oe.toolbarPanel.add(screenfitButton = GetButton("icons/fit.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); screenfitButton.setToolTipText("Screen fit"); screenfitButton.addActionListener(this); @@ -630,8 +630,8 @@ snapobjectButton.setToolTipText("Snap Object"); } - oe.toolbarPanel.add(flashSelectionButton = new cButton("?", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - flashSelectionButton.setToolTipText("Show selection"); + oe.toolbarPanel.add(flashSelectionButton = GetButton("icons/light-bulb.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + flashSelectionButton.setToolTipText("Highlight selection"); flashSelectionButton.addActionListener(this); oe.toolbarPanel.add(new JSeparator(SwingConstants.VERTICAL)); @@ -815,6 +815,10 @@ shadowCB.setToolTipText("Compute shadows when live"); shadowCB.addItemListener(this); + panel.add(autosaveCB = new cCheckBox("Auto-save", Globals.SAVEONMAKE)); //, constraints); + autosaveCB.setToolTipText("Auto-save on structure change"); + autosaveCB.addItemListener(this); + if (Globals.ADVANCED) { panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT)); //, constraints); @@ -864,25 +868,26 @@ /*DropTarget dropTarget =*/ new DropTarget(oe.cameraView, this); } - JCheckBox liveCB; - JCheckBox supportCB; - JCheckBox localCB; - JCheckBox crowdCB; - JCheckBox smoothCB; - JCheckBox fastCB; - JCheckBox slowCB; - JCheckBox boxCB; - JCheckBox zoomBoxCB; - JCheckBox trackCB; - JCheckBox smoothfocusCB; + cCheckBox liveCB; + cCheckBox supportCB; + cCheckBox localCB; + cCheckBox crowdCB; + cCheckBox smoothCB; + cCheckBox fastCB; + cCheckBox slowCB; + cCheckBox boxCB; + cCheckBox zoomBoxCB; + cCheckBox trackCB; + cCheckBox smoothfocusCB; // JCheckBox speakerMocapCB; - JCheckBox speakerCameraCB; - JCheckBox speakerFocusCB; - JCheckBox debugCB; + cCheckBox speakerCameraCB; + cCheckBox speakerFocusCB; + cCheckBox debugCB; - JCheckBox oeilCB; - JCheckBox shadowCB; - JCheckBox lookAtCB; + cCheckBox oeilCB; + cCheckBox shadowCB; + cCheckBox autosaveCB; + cCheckBox lookAtCB; // static int COLOR = 1; // static int MATERIAL = 2; @@ -890,9 +895,9 @@ int dropAttributes = Object3D.COLOR | Object3D.MATERIAL; - JCheckBox colorCB; - JCheckBox materialCB; - JCheckBox textureCB; + cCheckBox colorCB; + cCheckBox materialCB; + cCheckBox textureCB; public void itemStateChanged(ItemEvent e) { @@ -988,6 +993,10 @@ else if(e.getSource() == shadowCB) { Globals.COMPUTESHADOWWHENLIVE ^= true; + } + else if(e.getSource() == autosaveCB) + { + Globals.SAVEONMAKE ^= true; } else if(e.getSource() == lookAtCB) { @@ -3159,7 +3168,8 @@ buttonGroup.remove(ab); radioPanel.remove(ab); - ab.GetObject().editWindow = null; + //ab.GetObject().editWindow = null; + ab.GetObject().manipWindow = null; // ab.GetObject().objectUI = null; // ????????? ((cRadio)radioPanel.getComponent(radioPanel.getComponentCount() - 1)).doClick(); @@ -3273,6 +3283,7 @@ // fix "+" issue //group.editWindow = this; + group.manipWindow = this; /* currentLayout = radio.layout; @@ -4595,6 +4606,7 @@ if (cut) { + if (Globals.SAVEONMAKE) Save(); //int indices[] = jList.getSelectedIndices(); //for (int i = indices.length - 1; i >= 0; i--) diff --git a/Mocap.java b/Mocap.java index 438e46a..545c82e 100644 --- a/Mocap.java +++ b/Mocap.java @@ -501,6 +501,7 @@ centroid.z = matrix[3][2]; // this.getCentroid(centroid, true); + CameraPane.CreateSelectedPoint(); CameraPane.debugpointG.name = ""; CameraPane.debugpointG.toParent[3][0] = mocaporigin.x; CameraPane.debugpointG.toParent[3][1] = mocaporigin.y; diff --git a/ObjEditor.java b/ObjEditor.java index 9fcd4b1..a1683f8 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -4,6 +4,7 @@ import java.awt.*; import java.awt.event.*; +import java.awt.image.BufferedImage; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; @@ -37,6 +38,52 @@ JFrame frame; static ObjEditor theFrame; + + cButton GetButton(String name, boolean border) + { + try + { + ImageIcon icon = GetIcon(name); + return new cButton(icon, border); + } + catch (Exception e) + { + return new cButton(name, border); + } + } + + cCheckBox GetCheckBox(String name, boolean border) + { + try + { + ImageIcon icon = GetIcon(name); + return new cCheckBox(icon, border); + } + catch (Exception e) + { + return new cCheckBox(name, border); + } + } + + private ImageIcon GetIcon(String name) throws IOException + { + BufferedImage image = javax.imageio.ImageIO.read(getClass().getClassLoader().getResourceAsStream(name)); + + if (image.getWidth() != 24 && image.getHeight() != 24) + { + BufferedImage resized = new BufferedImage(24, 24, image.getType()); + Graphics2D g = resized.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); + //g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g.drawImage(image, 0, 0, 24, 24, 0, 0, image.getWidth(), image.getHeight(), null); + g.dispose(); + + image = resized; + } + + javax.swing.ImageIcon icon = new javax.swing.ImageIcon(image); + return icon; + } // SCRIPT @@ -3408,6 +3455,8 @@ public void Save() { + System.err.println("Save"); + cRadio tab = GetCurrentTab(); boolean temp = CameraPane.SWITCH; @@ -3492,6 +3541,8 @@ public void Undo() { + System.err.println("Undo"); + cRadio tab = GetCurrentTab(); if (tab.undoindex == 0) @@ -4170,7 +4221,8 @@ void makeSomething(Object3D thing, boolean resetmodel) // deselect) { - Save(); + if (Globals.SAVEONMAKE) + Save(); //Tween.set(thing, 0).target(1).start(tweenManager); //Tween.to(thing, 0, 0.5f).target(0).start(tweenManager); // if (thing instanceof GenericJointDemo) @@ -4479,6 +4531,7 @@ if (readobj != null) { + if (Globals.SAVEONMAKE) Save(); try { diff --git a/Object3D.java b/Object3D.java index 45bb2a6..c2b61ec 100644 --- a/Object3D.java +++ b/Object3D.java @@ -181,7 +181,7 @@ return; } - Object3D o = new Object3D(); + Object3D o = new Object3D("copy of " + this.name); hashtable.put(GetUUID(), o); @@ -219,16 +219,23 @@ if (!hashtable.containsKey(GetUUID())) return; + if (blockloop) + return; + + blockloop = true; + Object3D o = hashtable.get(GetUUID()); RestoreBigData(o); - hashtable.remove(GetUUID()); + //hashtable.remove(GetUUID()); for (int i=0; i<Size(); i++) { get(i).RestoreBigData(hashtable); } + + blockloop = false; } void RestoreBigData(Object3D o) @@ -2433,6 +2440,14 @@ { editWindow.refreshContents(); } + else + { + if (manipWindow != null) + { + manipWindow.refreshContents(); + } + } + //if (parent != null) //parent.refreshEditWindow(); } @@ -4963,6 +4978,14 @@ } } + ObjEditor GetWindow() + { + if (editWindow != null) + return editWindow; + + return manipWindow; + } + cTreePath Select(int indexcount, boolean deselect) { if (hide || dontselect) @@ -4999,10 +5022,11 @@ if (leaf != null) { cTreePath tp = new cTreePath(this, leaf); - if (editWindow != null) + ObjEditor window = GetWindow(); + if (window != null) { //System.out.println("editWindow = " + editWindow + " vs " + this); - editWindow.Select(tp, deselect, true); + window.Select(tp, deselect, true); } return tp; @@ -5028,9 +5052,10 @@ if (leaf != null) { cTreePath tp = new cTreePath(this, leaf); - if (editWindow != null) + ObjEditor window = GetWindow(); + if (window != null) { - editWindow.Select(tp, deselect, true); + window.Select(tp, deselect, true); } return tp; @@ -7967,6 +7992,8 @@ } transient ObjEditor editWindow; + transient ObjEditor manipWindow; + transient ObjectUI objectUI; public static int povDepth = 0; private static cVector tbMin = new cVector(); diff --git a/cButton.java b/cButton.java index fb1d9a3..6755475 100644 --- a/cButton.java +++ b/cButton.java @@ -21,4 +21,25 @@ //setBorder(null); //new javax.swing.border.EmptyBorder(0,0,0,0)); } } + + cButton(javax.swing.ImageIcon icon, boolean border) + { + super(icon); + + setMargin(new java.awt.Insets(1, 1, 1, 1)); + +//result = new JButton( icon ); +//result.setBorderPainted( false ); +//result.setContentAreaFilled( false ); +// +//width = icon.getIconWidth(); +//height = icon.getIconHeight(); +//result.setPreferredSize( new Dimension( width, height ) ); + if (border) + setBorder(new javax.swing.border.EtchedBorder()); + else + { + //setBorder(null); //new javax.swing.border.EmptyBorder(0,0,0,0)); + } + } } diff --git a/cCheckBox.java b/cCheckBox.java index bf26b8b..8135140 100644 --- a/cCheckBox.java +++ b/cCheckBox.java @@ -1,19 +1,40 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -/** - * - * @author nbriere - */ +import javax.swing.ImageIcon; + public class cCheckBox extends javax.swing.JCheckBox { cCheckBox(String name, boolean enabled) { super(name, enabled); - - setBorder(new javax.swing.border.EmptyBorder(0,0,0,0)); + + setBorder(new javax.swing.border.EmptyBorder(0, 0, 0, 0)); //setBorder(new javax.swing.border.EtchedBorder()); } + + cCheckBox(ImageIcon icon, boolean enabled) + { + super("", enabled); + + this.image = icon.getImage(); + iconWidth = icon.getIconWidth(); + + setBorder(new javax.swing.border.EmptyBorder(8, 0, 8, 24)); // top, left, bottom, right + //setBorder(new javax.swing.border.EtchedBorder()); + } + + private java.awt.Image image; + private int iconWidth; + + @Override + protected void paintComponent(java.awt.Graphics g) + { + super.paintComponent(g); + if (image != null) + { + //if (getWidth() > image.getWidth(null) + 8) + { + g.drawImage(image, 18, 6, this); + } + } + } } diff --git a/cFileSystemPane.java b/cFileSystemPane.java index da2f91f..56bc5ea 100644 --- a/cFileSystemPane.java +++ b/cFileSystemPane.java @@ -26,7 +26,7 @@ JCheckBox stripCB; JCheckBox genUVCB; - JCheckBox mergeAttributesCB; + cCheckBox mergeAttributesCB; cFileSystemPane(iCallBack o) { diff --git a/icons/add-128.png b/icons/add-128.png new file mode 100644 index 0000000..5e24f1e --- /dev/null +++ b/icons/add-128.png Binary files differ diff --git a/icons/down_arrow.png b/icons/down_arrow.png new file mode 100644 index 0000000..05a8b44 --- /dev/null +++ b/icons/down_arrow.png Binary files differ diff --git a/icons/fit.png b/icons/fit.png new file mode 100644 index 0000000..c387053 --- /dev/null +++ b/icons/fit.png Binary files differ diff --git a/icons/fullscreen.png b/icons/fullscreen.png new file mode 100644 index 0000000..0048e0b --- /dev/null +++ b/icons/fullscreen.png Binary files differ diff --git a/icons/light-bulb.png b/icons/light-bulb.png new file mode 100644 index 0000000..601268e --- /dev/null +++ b/icons/light-bulb.png Binary files differ diff --git a/icons/redo.png b/icons/redo.png new file mode 100644 index 0000000..603a4b8 --- /dev/null +++ b/icons/redo.png Binary files differ diff --git a/icons/run.png b/icons/run.png new file mode 100644 index 0000000..8d43124 --- /dev/null +++ b/icons/run.png Binary files differ diff --git a/icons/runfast.png b/icons/runfast.png new file mode 100644 index 0000000..1a25c05 --- /dev/null +++ b/icons/runfast.png Binary files differ diff --git a/icons/step.png b/icons/step.png new file mode 100644 index 0000000..7ec1f2c --- /dev/null +++ b/icons/step.png Binary files differ diff --git a/icons/track.png b/icons/track.png new file mode 100644 index 0000000..59f9b49 --- /dev/null +++ b/icons/track.png Binary files differ diff --git a/icons/undo.png b/icons/undo.png new file mode 100644 index 0000000..5fbe678 --- /dev/null +++ b/icons/undo.png Binary files differ -- Gitblit v1.6.2