Normand Briere
2019-06-24 47cd0f0a3870d843cb758535316060d30f15c811
GroupEditor.java
....@@ -150,6 +150,8 @@
150150
151151 void SetupMenu2(GroupEditor oe)
152152 {
153
+ oe.jTree = new cTree();
154
+
153155 Menu menu;
154156 oe.menuBar.add(menu = new Menu("Edit"));
155157 //editItem = menu.add(new MenuItem("Edit"));
....@@ -160,7 +162,7 @@
160162 // redoItem = menu.add(new MenuItem("Redo"));
161163 // redoItem.addActionListener(this);
162164 // menu.add("-");
163
- duplicateItem = menu.add(new MenuItem("Duplicate"));
165
+ duplicateItem = oe.jTree.popup.add(new JMenuItem("Duplicate"));
164166 duplicateItem.addActionListener(this);
165167 cloneItem = menu.add(new MenuItem("Clone"));
166168 cloneItem.addActionListener(this);
....@@ -334,13 +336,21 @@
334336 frontItem.addActionListener(this);
335337 compositeItem = menu.add(new MenuItem("Composite"));
336338 compositeItem.addActionListener(this);
339
+
340
+ if (Globals.ADVANCED)
341
+ {
337342 hideItem = menu.add(new MenuItem("Hidden Group"));
338343 hideItem.addActionListener(this);
344
+ }
339345 ungroupItem = menu.add(new MenuItem("Ungroup"));
340346 ungroupItem.addActionListener(this);
347
+
341348 menu.add("-");
349
+
342350 randomItem = menu.add(new MenuItem("Switch node"));
343351 randomItem.addActionListener(this);
352
+ if (Globals.ADVANCED)
353
+ {
344354 switchGeoItem = menu.add(new MenuItem("Switch Geometry"));
345355 switchGeoItem.addActionListener(this);
346356 switchTransfoItem = menu.add(new MenuItem("Switch Transform"));
....@@ -348,8 +358,6 @@
348358 morphItem = menu.add(new MenuItem("Morph Group"));
349359 morphItem.addActionListener(this);
350360
351
- if (Globals.ADVANCED)
352
- {
353361 menu.add("-");
354362 physicsItem = menu.add(new MenuItem("Physics"));
355363 physicsItem.addActionListener(this);
....@@ -580,43 +588,45 @@
580588 //minButton.setToolTipText("Minimize window");
581589 //minButton.addActionListener(this);
582590
583
- oe.toolbarPanel.add(maxButton = new cButton("\u271A", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
591
+ oe.toolbarPanel.add(maxButton = GetButton("icons/add-128.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
584592 maxButton.setToolTipText("Maximize window");
585593 maxButton.addActionListener(this);
586594
587
- oe.toolbarPanel.add(fullButton = new cButton("\u2b1c", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
595
+ oe.toolbarPanel.add(fullButton = GetButton("icons/fullscreen.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
588596 fullButton.setToolTipText("Full-screen window");
589597 fullButton.addActionListener(this);
590598
591
- oe.toolbarPanel.add(undoButton = new cButton("\u21a9", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
599
+ oe.toolboxPanel.add(undoButton = GetButton("icons/undo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
592600 undoButton.setToolTipText("Undo changes");
593601 undoButton.addActionListener(this);
594602
595
- oe.toolbarPanel.add(redoButton = new cButton("\u21aa", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
603
+ oe.toolboxPanel.add(redoButton = GetButton("icons/redo.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
596604 redoButton.setToolTipText("Redo changes");
597605 redoButton.addActionListener(this);
598606
599
- oe.toolbarPanel.add(saveButton = new cButton("\u21e3", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
607
+ oe.toolboxPanel.add(saveButton = GetButton("icons/down_arrow.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
600608 saveButton.setToolTipText("Save changes");
601609 saveButton.addActionListener(this);
602610
603
- oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE())); //, oe.aConstraints);
611
+ oe.toolboxPanel.add(liveCB = GetToggleButton("icons/run.png", Globals.isLIVE())); //, oe.aConstraints);
604612 liveCB.setToolTipText("Enable animation");
605613 liveCB.addItemListener(this);
606614
607
- oe.toolbarPanel.add(oneStepButton = new cButton("\u29f4", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
615
+ oe.toolboxPanel.add(oneStepButton = GetButton("icons/step.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
608616 oneStepButton.setToolTipText("Animate one step forward");
609617 oneStepButton.addActionListener(this);
610618
611
- oe.toolbarPanel.add(fastCB = new cCheckBox("Fast", CameraPane.FAST)); //, constraints);
619
+ oe.toolboxPanel.add(fastCB = GetToggleButton("icons/runfast.png", CameraPane.FAST)); //, constraints);
612620 fastCB.setToolTipText("Fast mode");
613621 fastCB.addItemListener(this);
614622
615
- oe.toolbarPanel.add(trackCB = new cCheckBox(":", CameraPane.TRACK)); //, oe.aConstraints);
623
+ oe.toolboxPanel.Return();
624
+
625
+ oe.toolboxPanel.add(trackCB = GetToggleButton("icons/track.png", CameraPane.TRACK)); //, oe.aConstraints);
616626 trackCB.setToolTipText("Enable tracking");
617627 trackCB.addItemListener(this);
618628
619
- oe.toolbarPanel.add(screenfitButton = new cButton("@", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
629
+ oe.toolboxPanel.add(screenfitButton = GetButton("icons/fit.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
620630 screenfitButton.setToolTipText("Screen fit");
621631 screenfitButton.addActionListener(this);
622632
....@@ -630,15 +640,17 @@
630640 snapobjectButton.setToolTipText("Snap Object");
631641 }
632642
633
- oe.toolbarPanel.add(flashSelectionButton = new cButton("?", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
634
- flashSelectionButton.setToolTipText("Show selection");
643
+ oe.toolboxPanel.add(flashSelectionButton = GetButton("icons/flash-light.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
644
+ flashSelectionButton.setToolTipText("Highlight selection");
635645 flashSelectionButton.addActionListener(this);
636646
637
- oe.toolbarPanel.add(new JSeparator(SwingConstants.VERTICAL));
647
+ //oe.toolbarPanel.add(new JSeparator(SwingConstants.VERTICAL));
638648
639649 oe.toolbarPanel.add(twoButton = new cButton("|-|", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
640650 twoButton.setToolTipText("Show center view only");
641651 twoButton.addActionListener(this);
652
+ this.fullscreenLayout = twoButton;
653
+
642654 oe.toolbarPanel.add(fourButton = new cButton("-||", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
643655 fourButton.addActionListener(this);
644656 fourButton.setToolTipText("Show left panel only");
....@@ -653,16 +665,63 @@
653665 sevenButton.addActionListener(this);
654666 //
655667
656
- oe.toolbarPanel.add(rootButton = new cButton("o o o", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
668
+ oe.toolbarPanel.add(rootButton = GetButton("icons/write.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
657669 rootButton.setToolTipText("Edit selection in new tab");
658670 rootButton.addActionListener(this);
659671
660
- oe.toolbarPanel.add(closeButton = new cButton("X", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
672
+ oe.toolbarPanel.add(closeButton = GetButton("icons/close-icon.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
661673 closeButton.setToolTipText("Close tab");
662674 closeButton.addActionListener(this);
663675 //oe.treePanel.add(clearButton = new cButton("X"), oe.aConstraints);
664676 //clearButton.addActionListener(this);
665
-
677
+
678
+ // INSERT
679
+ oe.toolboxPanel.add(gridButton = GetButton("icons/grid.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
680
+ gridButton.setToolTipText("Create grid");
681
+ gridButton.addActionListener(this);
682
+
683
+ oe.toolboxPanel.add(boxButton = GetButton("icons/box.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
684
+ boxButton.setToolTipText("Create box");
685
+ boxButton.addActionListener(this);
686
+
687
+ oe.toolboxPanel.add(sphereButton = GetButton("icons/sphere.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
688
+ sphereButton.setToolTipText("Create sphere");
689
+ sphereButton.addActionListener(this);
690
+
691
+ oe.toolboxPanel.Return();
692
+
693
+ oe.toolboxPanel.add(coneButton = GetButton("icons/cone.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
694
+ coneButton.setToolTipText("Create cone");
695
+ coneButton.addActionListener(this);
696
+
697
+ oe.toolboxPanel.add(torusButton = GetButton("icons/torus.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
698
+ torusButton.setToolTipText("Create torus");
699
+ torusButton.addActionListener(this);
700
+
701
+ oe.toolboxPanel.add(superButton = GetButton("icons/super.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
702
+ superButton.setToolTipText("Create superellipsoid");
703
+ superButton.addActionListener(this);
704
+
705
+ if (Globals.ADVANCED)
706
+ {
707
+ oe.toolboxPanel.add(kleinButton = GetButton("icons/klein.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
708
+ kleinButton.setToolTipText("Create Klein bottle");
709
+ kleinButton.addActionListener(this);
710
+ }
711
+
712
+ oe.toolboxPanel.add(particlesButton = GetButton("icons/particles.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
713
+ particlesButton.setToolTipText("Create particle system");
714
+ particlesButton.addActionListener(this);
715
+
716
+ oe.toolboxPanel.add(overlayButton = GetButton("icons/overlay.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
717
+ overlayButton.setToolTipText("Create overlay");
718
+ overlayButton.addActionListener(this);
719
+
720
+ oe.toolboxPanel.add(lightButton = GetButton("icons/light-bulb.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
721
+ lightButton.setToolTipText("Create light");
722
+ lightButton.addActionListener(this);
723
+
724
+ // EDIT panel
666725 editCommandsPanel.add(editButton = new cButton("+", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
667726 editButton.setToolTipText("Edit selection");
668727 editButton.addActionListener(this);
....@@ -703,7 +762,7 @@
703762
704763 JScrollPane jSP;
705764 //ctrlPanel.add(new JScrollPane(jTree = new cTree(new cTreeModel(this))), aConstraints);
706
- jSPPanel.add(jSP = new JScrollPane(oe.jTree = new cTree(null))); //, oe.aConstraints);
765
+ jSPPanel.add(jSP = new JScrollPane(oe.jTree)); //, oe.aConstraints);
707766 ResetModel();
708767
709768 oe.treePanel.add(jSPPanel);
....@@ -808,11 +867,23 @@
808867 // debugCB.addItemListener(this);
809868
810869 panel.add(oeilCB = new cCheckBox("Eye", CameraPane.OEIL)); //, constraints);
870
+ oeilCB.setToolTipText("Move camera when tracking target");
811871 oeilCB.addItemListener(this);
812872
873
+ panel.add(shadowCB = new cCheckBox("Shadow", Globals.COMPUTESHADOWWHENLIVE)); //, constraints);
874
+ shadowCB.setToolTipText("Compute shadows when live");
875
+ shadowCB.addItemListener(this);
876
+
877
+ panel.add(autosaveCB = new cCheckBox("Auto-save", Globals.SAVEONMAKE)); //, constraints);
878
+ autosaveCB.setToolTipText("Auto-save on structure change");
879
+ autosaveCB.addItemListener(this);
880
+
881
+ if (Globals.ADVANCED)
882
+ {
813883 panel.add(lookAtCB = new cCheckBox("Target", CameraPane.LOOKAT)); //, constraints);
814884 lookAtCB.setToolTipText("Look-at target");
815885 lookAtCB.addItemListener(this);
886
+ }
816887
817888 }
818889
....@@ -827,6 +898,14 @@
827898 void EditObject(Object3D obj)
828899 {
829900 cRadio radioButton = new cRadio(obj.name);
901
+
902
+ // Patch to avoid bug with transparency.
903
+ radioButton.hadMaterial = obj.material != null;
904
+ if (!radioButton.hadMaterial)
905
+ {
906
+ obj.material = new cMaterial();
907
+ }
908
+
830909 radioButton.SetObject(obj);
831910 radioButton.layout = sevenButton;
832911 radioButton.SetCamera(cameraView.renderCamera, false);
....@@ -848,23 +927,26 @@
848927 /*DropTarget dropTarget =*/ new DropTarget(oe.cameraView, this);
849928 }
850929
851
- JCheckBox liveCB;
852
- JCheckBox supportCB;
853
- JCheckBox localCB;
854
- JCheckBox crowdCB;
855
- JCheckBox smoothCB;
856
- JCheckBox fastCB;
857
- JCheckBox slowCB;
858
- JCheckBox boxCB;
859
- JCheckBox zoomBoxCB;
860
- JCheckBox trackCB;
861
- JCheckBox smoothfocusCB;
930
+ cToggleButton liveCB;
931
+ cCheckBox supportCB;
932
+ cCheckBox localCB;
933
+ cCheckBox crowdCB;
934
+ cCheckBox smoothCB;
935
+ cToggleButton fastCB;
936
+ cCheckBox slowCB;
937
+ cCheckBox boxCB;
938
+ cCheckBox zoomBoxCB;
939
+ cToggleButton trackCB;
940
+ cCheckBox smoothfocusCB;
862941 // JCheckBox speakerMocapCB;
863
- JCheckBox speakerCameraCB;
864
- JCheckBox speakerFocusCB;
865
- JCheckBox debugCB;
866
- JCheckBox oeilCB;
867
- JCheckBox lookAtCB;
942
+ cCheckBox speakerCameraCB;
943
+ cCheckBox speakerFocusCB;
944
+ cCheckBox debugCB;
945
+
946
+ cCheckBox oeilCB;
947
+ cCheckBox shadowCB;
948
+ cCheckBox autosaveCB;
949
+ cCheckBox lookAtCB;
868950
869951 // static int COLOR = 1;
870952 // static int MATERIAL = 2;
....@@ -872,9 +954,9 @@
872954
873955 int dropAttributes = Object3D.COLOR | Object3D.MATERIAL;
874956
875
- JCheckBox colorCB;
876
- JCheckBox materialCB;
877
- JCheckBox textureCB;
957
+ cCheckBox colorCB;
958
+ cCheckBox materialCB;
959
+ cCheckBox textureCB;
878960
879961 public void itemStateChanged(ItemEvent e)
880962 {
....@@ -967,6 +1049,14 @@
9671049 {
9681050 cameraView.ToggleOeil();
9691051 }
1052
+ else if(e.getSource() == shadowCB)
1053
+ {
1054
+ Globals.COMPUTESHADOWWHENLIVE ^= true;
1055
+ }
1056
+ else if(e.getSource() == autosaveCB)
1057
+ {
1058
+ Globals.SAVEONMAKE ^= true;
1059
+ }
9701060 else if(e.getSource() == lookAtCB)
9711061 {
9721062 cameraView.ToggleLookAt();
....@@ -983,7 +1073,8 @@
9831073
9841074 /**/
9851075 //DragSource.getDefaultDragSource().startDrag(dge, DragSource.DefaultMoveNoDrop, new StringSelection("Allo"), this);
986
- TreePath path = new TreePath(objEditor.jTree.getSelectionPath().getLastPathComponent());
1076
+ //TreePath path = new TreePath(objEditor.jTree.getSelectionPath().getLastPathComponent());
1077
+ TreePath path = objEditor.jTree.getSelectionPath();
9871078 if ((path == null) || (path.getPathCount() <= 1)) {
9881079 // We can't move the root node or an empty selection
9891080 return;
....@@ -1107,16 +1198,16 @@
11071198 return;
11081199 }
11091200
1110
- if (dtde.getDropAction() == DnDConstants.ACTION_MOVE) // ?? LINK)
1111
- {
1201
+// june 2019 if (dtde.getDropAction() == DnDConstants.ACTION_MOVE) // ?? LINK)
1202
+// {
11121203 loadClipboard(true);
11131204 objEditor.jTree.setSelectionPath(destinationPath);
11141205 pasteInto(false, false);
1115
- } else {
1116
- loadClipboard(false);
1117
- objEditor.jTree.setSelectionPath(destinationPath);
1118
- pasteInto(false, false); // true); // ???
1119
- }
1206
+// } else {
1207
+// loadClipboard(false);
1208
+// objEditor.jTree.setSelectionPath(destinationPath);
1209
+// pasteInto(false, false); // true); // ???
1210
+// }
11201211 }
11211212 public void dropActionChanged(DropTargetDragEvent dtde)
11221213 // Called if the user has modified the current drop gesture
....@@ -1708,11 +1799,11 @@
17081799 objEditor.cameraView.renderCamera.setAim(v2, v1);
17091800 objEditor.cameraView.repaint();
17101801 } else
1711
- if (source == rectoidItem)
1802
+ if (source == rectoidItem || source == boxButton)
17121803 {
17131804 makeSomething(new Box());
17141805 } else
1715
- if (source == particleItem)
1806
+ if (source == particleItem || source == particlesButton)
17161807 {
17171808 ParticleNode particleGeom = new ParticleNode("Particles", 1000); //, particleType);
17181809 ParticleController particleController = new ParticleController(particleGeom);
....@@ -1791,27 +1882,27 @@
17911882
17921883 makeSomething(obj);
17931884 } else
1794
- if (source == gridItem)
1885
+ if (source == gridItem || source == gridButton)
17951886 {
17961887 makeSomething(new Grid());
17971888 } else
1798
- if (source == ellipsoidItem)
1889
+ if (source == ellipsoidItem || source == sphereButton)
17991890 {
18001891 makeSomething(new Sphere());
18011892 } else
1802
- if (source == coneItem)
1893
+ if (source == coneItem || source == coneButton)
18031894 {
18041895 makeSomething(new Cone());
18051896 } else
1806
- if (source == torusItem)
1897
+ if (source == torusItem || source == torusButton)
18071898 {
18081899 makeSomething(new Torus());
18091900 } else
1810
- if (source == superItem)
1901
+ if (source == superItem || source == superButton)
18111902 {
18121903 makeSomething(new Superellipsoid());
18131904 } else
1814
- if (source == kleinItem)
1905
+ if (source == kleinItem || source == kleinButton)
18151906 {
18161907 makeSomething(new Klein());
18171908 } else
....@@ -1831,7 +1922,7 @@
18311922 {
18321923 makeSomething(new BezierSurface());
18331924 } else
1834
- if (source == overlayItem)
1925
+ if (source == overlayItem || source == overlayButton)
18351926 {
18361927 /*
18371928 Object3D obj = new BezierSurface(5,8);
....@@ -1879,7 +1970,7 @@
18791970 s.setup();
18801971 makeSomething(s);
18811972 } else
1882
- if (source == lightItem)
1973
+ if (source == lightItem || source == lightButton)
18831974 {
18841975 makeSomething(new Light());
18851976 } else
....@@ -2565,7 +2656,7 @@
25652656 {
25662657 CastShadow(2);
25672658 } else
2568
- if (source == ungroupItem)
2659
+ if (source == ungroupItem || source == ungroupButton)
25692660 {
25702661 //ungroup();
25712662 for (int i=0; i<group.selection.size(); i++)
....@@ -2903,6 +2994,10 @@
29032994 if (source == twoButton)
29042995 {
29052996 radio.layout = twoButton;
2997
+
2998
+ if (CameraPane.FULLSCREEN)
2999
+ fullscreenLayout = radio.layout;
3000
+
29063001 // bug
29073002 //gridPanel.setDividerLocation(1.0);
29083003 //bigPanel.setDividerLocation(0.0);
....@@ -2958,6 +3053,9 @@
29583053 {
29593054 radio.layout = threeButton;
29603055
3056
+ if (CameraPane.FULLSCREEN)
3057
+ fullscreenLayout = radio.layout;
3058
+
29613059 // bigThree.remove(scenePanel);
29623060 // bigThree.remove(centralPanel);
29633061 // bigThree.remove(XYZPanel);
....@@ -2996,6 +3094,9 @@
29963094 {
29973095 radio.layout = fourButton;
29983096
3097
+ if (CameraPane.FULLSCREEN)
3098
+ fullscreenLayout = radio.layout;
3099
+
29993100 // bigThree.remove(scenePanel);
30003101 // bigThree.remove(centralPanel);
30013102 // bigThree.remove(XYZPanel);
....@@ -3032,6 +3133,9 @@
30323133 if (source == sixButton)
30333134 {
30343135 radio.layout = sixButton;
3136
+
3137
+ if (CameraPane.FULLSCREEN)
3138
+ fullscreenLayout = radio.layout;
30353139
30363140 // bigThree.remove(scenePanel);
30373141 // bigThree.remove(centralPanel);
....@@ -3070,6 +3174,9 @@
30703174 if (source == sevenButton)
30713175 {
30723176 radio.layout = sevenButton;
3177
+
3178
+ if (CameraPane.FULLSCREEN)
3179
+ fullscreenLayout = radio.layout;
30733180
30743181 // bigThree.remove(scenePanel);
30753182 // bigThree.remove(centralPanel);
....@@ -3126,12 +3233,19 @@
31263233 for (Enumeration e = buttonGroup.getElements(); e.hasMoreElements();)
31273234 {
31283235 ab = (cRadio)e.nextElement();
3129
- if(ab.getModel().isSelected() && ab.GetObject() != client)
3236
+ if (ab.getModel().isSelected() && ab.GetObject() != client)
31303237 {
3238
+ // Patch to avoid bug with transparency.
3239
+ if (!ab.hadMaterial)
3240
+ {
3241
+ ab.object.material = null;
3242
+ }
3243
+
31313244 buttonGroup.remove(ab);
31323245 radioPanel.remove(ab);
31333246
3134
- ab.GetObject().editWindow = null;
3247
+ //ab.GetObject().editWindow = null;
3248
+ ab.GetObject().manipWindow = null;
31353249 // ab.GetObject().objectUI = null; // ?????????
31363250
31373251 ((cRadio)radioPanel.getComponent(radioPanel.getComponentCount() - 1)).doClick();
....@@ -3245,6 +3359,7 @@
32453359
32463360 // fix "+" issue
32473361 //group.editWindow = this;
3362
+ group.manipWindow = this;
32483363
32493364 /*
32503365 currentLayout = radio.layout;
....@@ -4330,7 +4445,7 @@
43304445 {
43314446 //System.out.println("edit : " + objectPanel.indexOfTab("Material"));
43324447 //objectPanel.setEnabledAt(objectPanel.indexOfTab("Material"), false);
4333
- objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit"));
4448
+ //objectPanel.setSelectedIndex(objectPanel.indexOfTab("Edit"));
43344449
43354450 Object3D elem = (Object3D)group.selection.elementAt(i);
43364451 if(elem != group || !newWindow)
....@@ -4567,6 +4682,7 @@
45674682
45684683 if (cut)
45694684 {
4685
+ if (Globals.SAVEONMAKE)
45704686 Save();
45714687 //int indices[] = jList.getSelectedIndices();
45724688 //for (int i = indices.length - 1; i >= 0; i--)
....@@ -5293,6 +5409,21 @@
52935409 cButton saveButton;
52945410 cButton oneStepButton;
52955411
5412
+ cButton groupButton;
5413
+ cButton ungroupButton;
5414
+ cButton compositeButton;
5415
+
5416
+ cButton gridButton;
5417
+ cButton boxButton;
5418
+ cButton sphereButton;
5419
+ cButton coneButton;
5420
+ cButton torusButton;
5421
+ cButton superButton;
5422
+ cButton kleinButton;
5423
+ cButton particlesButton;
5424
+ cButton overlayButton;
5425
+ cButton lightButton;
5426
+
52965427 cButton screenfitButton;
52975428 cButton screenfitpointButton;
52985429 cButton snapobjectButton;
....@@ -5317,7 +5448,7 @@
53175448 private MenuItem cutItem;
53185449 private MenuItem undoItem;
53195450 private MenuItem redoItem;
5320
- private MenuItem duplicateItem;
5451
+ private JMenuItem duplicateItem;
53215452 private MenuItem cloneItem;
53225453 private MenuItem cloneSupportItem;
53235454 private MenuItem overwriteGeoItem;