From 89b25e7cc97f6fe221dfd41c4d463500f8a31bc1 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Tue, 25 Jun 2019 23:58:09 -0400 Subject: [PATCH] Edit panel pin state. --- ObjEditor.java | 35 +++++++++++++++-- CameraPane.java | 20 ++++++++- GroupEditor.java | 56 ++++++++++++++++++++++++---- icons/overlay.png | 0 Object3D.java | 2 + icons/switch.png | 0 6 files changed, 98 insertions(+), 15 deletions(-) diff --git a/CameraPane.java b/CameraPane.java index 1175edb..b2db6b7 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -335,14 +335,28 @@ display.options1[2] = material.shadowbias; display.options1[3] = material.aniso; display.options1[4] = material.anisoV; +// System.out.println("display.options1[0] " + display.options1[0]); +// System.out.println("display.options1[1] " + display.options1[1]); +// System.out.println("display.options1[2] " + display.options1[2]); +// System.out.println("display.options1[3] " + display.options1[3]); +// System.out.println("display.options1[4] " + display.options1[4]); display.options2[0] = material.opacity; display.options2[1] = material.diffuse; display.options2[2] = material.factor; +// System.out.println("display.options2[0] " + display.options2[0]); +// System.out.println("display.options2[1] " + display.options2[1]); +// System.out.println("display.options2[2] " + display.options2[2]); cColor.HSBtoRGB(material.color, material.modulation, 1, display.options3); +// System.out.println("display.options3[0] " + display.options3[0]); +// System.out.println("display.options3[1] " + display.options3[1]); +// System.out.println("display.options3[2] " + display.options3[2]); display.options4[0] = material.cameralight/0.2f; display.options4[1] = material.subsurface; display.options4[2] = material.sheen; +// System.out.println("display.options4[0] " + display.options4[0]); +// System.out.println("display.options4[1] " + display.options4[1]); +// System.out.println("display.options4[2] " + display.options4[2]); // if (display.CURRENTANTIALIAS > 0) // display.options3[3] /= 4; @@ -9374,13 +9388,13 @@ void ResetOptions() { options1[0] = 100; - options1[1] = 0.00001f; - options1[2] = 20; + options1[1] = 0.025f; + options1[2] = 0.01f; options1[3] = 0; options1[4] = 0; options2[0] = 0; - options2[1] = 1; + options2[1] = 0.75f; options2[2] = 0; options2[3] = 0; diff --git a/GroupEditor.java b/GroupEditor.java index d57f0f7..502ff05 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -605,10 +605,12 @@ copyOptionsPanel.add(undoButton = GetButton("icons/undo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); undoButton.setToolTipText("Undo changes"); undoButton.addActionListener(this); + undoButton.setEnabled(false); copyOptionsPanel.add(redoButton = GetButton("icons/redo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); redoButton.setToolTipText("Redo changes"); redoButton.addActionListener(this); + redoButton.setEnabled(false); copyOptionsPanel.add(saveButton = GetButton("icons/down_arrow.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); saveButton.setToolTipText("Save changes"); @@ -743,6 +745,18 @@ lightButton.setToolTipText("Create light"); lightButton.addActionListener(this); + for (int i=6; --i>=0;) + { + oe.toolboxPanel.Return(); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + oe.toolboxPanel.add(new cGridBag()); + } + // EDIT panel editCommandsPanel.add(editButton = new cButton("+", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); editButton.setToolTipText("Edit selection"); @@ -3326,6 +3340,12 @@ } else if (source == editItem || source == editButton) { + for (Enumeration e = group.selection.elements(); e.hasMoreElements();) + { + Object3D child = (Object3D)e.nextElement(); + child.pinned = true; + } + EditSelection(false); } else if (source == uneditButton) @@ -3335,6 +3355,7 @@ Object3D child = (Object3D)e.nextElement(); if(child.editWindow != null) objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit")); + child.pinned = false; child.CloseUI(); listUI.remove(child); @@ -3351,6 +3372,7 @@ //copy.ClearUI(); for (Object3D obj : listUI) { + obj.pinned = true; obj.CloseUI(); } listUI.clear(); @@ -3360,7 +3382,7 @@ { assert(copy == group); - objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit")); + //objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit")); for (Object3D obj : listUI) { @@ -4502,10 +4524,6 @@ // } // } - static boolean allparams = true; - - static Vector<Object3D> listUI = new Vector<Object3D>(); - void EditSelection(boolean newWindow) { // aConstraints.gridy = 0; @@ -4599,6 +4617,17 @@ 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); + } + } + /**/ //switch (event.id) { @@ -4631,7 +4660,7 @@ if (tps != null && tps.length > 0 && tps[0].getLastPathComponent() instanceof Camera) // a camera { - if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) + if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) // Crash the camera because of invalid lightspace { CameraPane.camerachangeframe = 0; // don't refuse it Globals.theRenderer.SetCamera((Camera) tps[0].getLastPathComponent()); @@ -4640,6 +4669,13 @@ // Globals.theRenderer.eyeCamera = Globals.theRenderer.manipCamera; } + if (tps != null && tps.length == 1) + { + EditSelection(false); + } + + SetPinStates(tps != null && tps.length > 0); + refreshContents(); //return true; } @@ -4649,6 +4685,12 @@ freezemodel = false; } + void SetPinStates(boolean enabled) + { + editButton.setEnabled(enabled); + uneditButton.setEnabled(enabled); + } + void refreshContents(boolean cp) { if (objectPanel.getSelectedIndex() == objectPanel.indexOfTab("Info")) @@ -5475,8 +5517,6 @@ cButton minButton; cButton maxButton; cButton fullButton; - cButton undoButton; - cButton redoButton; cButton saveButton; cButton oneStepButton; diff --git a/ObjEditor.java b/ObjEditor.java index c8ad401..d10d05b 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -207,7 +207,7 @@ objEditor.ctrlPanel.remove(namePanel); - if (!GroupEditor.allparams) + if (!allparams) return; // objEditor.ctrlPanel.remove(liveCB); @@ -337,6 +337,11 @@ return frame.action(event, obj); } + // Cannot work without static + static boolean allparams = true; + + static java.util.Vector<Object3D> listUI = new java.util.Vector<Object3D>(); + void SetupMenu() { frame.setMenuBar(menuBar = new MenuBar()); @@ -397,6 +402,11 @@ // } // // materialFlushed = true; +// } +// if (objectPanel.getSelectedIndex() == objectPanel.indexOfTab("Edit")) +// { +// if (listUI.size() == 0) +// EditSelection(false); // } refreshContents(false); // To refresh Info tab @@ -1102,7 +1112,7 @@ oe.ctrlPanel.Return(); - if (!GroupEditor.allparams) + if (!allparams) return; setupPanel = new cGridBag().setVertical(false); @@ -1439,13 +1449,13 @@ //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); //tmp.setName("Edit"); objectPanel.add(materialPanel); - objectPanel.add(toolboxPanel); // JPanel north = new JPanel(new BorderLayout()); // north.setName("Edit"); // north.add(ctrlPanel, BorderLayout.NORTH); // objectPanel.add(north); objectPanel.add(editPanel); objectPanel.add(infoPanel); + objectPanel.add(toolboxPanel); /* aConstraints.gridx = 0; @@ -1454,7 +1464,7 @@ aConstraints.gridy += 1; aConstraints.gridwidth = 1; mainPanel.add(objectPanel, aConstraints); - */ + */ scrollpane = new JScrollPane(mainPanel, ScrollPaneConstants.// VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, @@ -3527,6 +3537,8 @@ tab.graphs[i] = null; } + SetUndoStates(); + // test save if (false) { @@ -3549,6 +3561,8 @@ void CopyChanged(Object3D obj) { + SetUndoStates(); + boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; @@ -3586,6 +3600,17 @@ } refreshContents(); + } + + cButton undoButton; + cButton redoButton; + + void SetUndoStates() + { + cRadio tab = GetCurrentTab(); + + undoButton.setEnabled(tab.undoindex > 0); + redoButton.setEnabled(tab.graphs[tab.undoindex + 1] != null); } public void Undo() @@ -4765,6 +4790,8 @@ String filename = browser.getFile(); if (filename != null && filename.length() > 0) { + if (!filename.endsWith(".gfd")) + filename += ".gfd"; lastname = browser.getDirectory() + filename; save(); } diff --git a/Object3D.java b/Object3D.java index c00f59b..e829908 100644 --- a/Object3D.java +++ b/Object3D.java @@ -7994,6 +7994,8 @@ transient ObjEditor editWindow; transient ObjEditor manipWindow; + transient boolean pinned; + transient ObjectUI objectUI; public static int povDepth = 0; private static cVector tbMin = new cVector(); diff --git a/icons/overlay.png b/icons/overlay.png index 8c71876..c9fabfb 100644 --- a/icons/overlay.png +++ b/icons/overlay.png Binary files differ diff --git a/icons/switch.png b/icons/switch.png index 310da04..4b82736 100644 --- a/icons/switch.png +++ b/icons/switch.png Binary files differ -- Gitblit v1.6.2