Normand Briere
2019-09-28 c3c47406ac43dafd51e6ad1d7b92a794bd69b7d6
ObjEditor.java
....@@ -24,6 +24,7 @@
2424 matrix.Matrix;
2525
2626 import grafeme.ui.*;
27
+import org.xj3d.ui.swt.widgets.ImageLoader;
2728
2829 class ObjEditor /*extends JFrame*/ implements iCallBack, ObjectUI,
2930 ActionListener, ChangeListener,
....@@ -97,9 +98,11 @@
9798
9899 cButton GetButton(String name, boolean border)
99100 {
100
- ImageIcon icon = GetIcon(name);
101
- if (icon != null || name.contains("/"))
102
- return new cButton(icon, border);
101
+ //ImageIcon icon = GetIcon(name);
102
+ boolean fit = !name.startsWith("icons");
103
+ if (//icon != null ||
104
+ name.contains("/"))
105
+ return new cButton(name, border, fit);
103106 else
104107 return new cButton(name, border);
105108 }
....@@ -136,9 +139,18 @@
136139 {
137140 BufferedImage image;
138141
139
- if (name.endsWith("jpg"))
140
- // Much faster!
141
- image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage();
142
+ if (!Grafreed.isWindows && name.endsWith("jpg"))
143
+ {
144
+ try
145
+ {
146
+ // Much faster!
147
+ image = JpegLoader.load(name);
148
+ }
149
+ catch (Exception e)
150
+ {
151
+ image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
152
+ }
153
+ }
142154 else
143155 image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
144156
....@@ -316,6 +328,8 @@
316328 objEditor.ctrlPanel.remove(setupPanel2);
317329 objEditor.ctrlPanel.remove(objectCommandsPanel);
318330 objEditor.ctrlPanel.remove(pushPanel);
331
+ if (versionPanel != null)
332
+ objEditor.ctrlPanel.remove(versionPanel);
319333 //objEditor.ctrlPanel.remove(fillPanel);
320334
321335 //Remove(normalpushField);
....@@ -383,14 +397,6 @@
383397 client = inClient;
384398 copy = client;
385399
386
- if (copy.versionlist == null)
387
- {
388
- copy.versionlist = new Object3D[100];
389
- copy.versionindex = -1;
390
-
391
-// Save(true);
392
- }
393
-
394400 SetupUI2(callee.GetEditor());
395401 }
396402
....@@ -501,7 +507,7 @@
501507 //povItem.addActionListener(this);
502508 closeItem.addActionListener(this);
503509
504
- objectPanel = new JTabbedPane();
510
+ objectTabbedPane = new JTabbedPane();
505511
506512 ChangeListener changeListener = new ChangeListener()
507513 {
....@@ -552,13 +558,13 @@
552558 // }
553559 // }
554560 // }
555
- cameraView.transformMode = objectPanel.getSelectedIndex() == 4;
561
+ cameraView.transformMode = objectTabbedPane.getSelectedIndex() == 5;
556562
557563 // refreshContents(false); // To refresh Info tab
558564 cameraView.repaint();
559565 }
560566 };
561
- objectPanel.addChangeListener(changeListener);
567
+ objectTabbedPane.addChangeListener(changeListener);
562568
563569 toolbarPanel = new JPanel();
564570 toolbarPanel.setName("Toolbar");
....@@ -601,7 +607,7 @@
601607 //infoPanel.setLayout(new BorderLayout());
602608 //infoPanel.add(createTextPane());
603609
604
- mainPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, objectPanel);
610
+ mainPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, objectTabbedPane);
605611 mainPanel.setName("Main");
606612 mainPanel.setContinuousLayout(true);
607613 mainPanel.setOneTouchExpandable(true);
....@@ -793,6 +799,8 @@
793799 // SendInfo(" delay: " + sel.delay + newline, "regular");
794800 // live, hide, ...
795801 //?? SendInfo(" Orig: " + maxima + newline, "regular");
802
+ if (sel.GetTextures().pigmentdata != null)
803
+ si.SendInfo(" EMBEDDED ", "regular");
796804 si.SendInfo((debug ? " Texture: " : " ") + sel.GetTextures(), "bold");
797805 // SendInfo((debug ? " Material: " : " ") + sel.material + newline, "regular");
798806 if (sel instanceof cMesh)
....@@ -903,10 +911,20 @@
903911
904912 cButton minButton;
905913 cButton maxButton;
906
- cButton fullButton;
914
+ cButton fullScreenButton;
907915 cButton collapseButton;
908916 cButton maximize3DButton;
909917
918
+ public void Show3DView()
919
+ {
920
+ // bug
921
+ //gridPanel.setDividerLocation(1.0);
922
+ //bigPanel.setDividerLocation(0.0);
923
+ bigThree.ClearUI();
924
+ bigThree.add(centralPanel);
925
+ bigThree.FlushUI();
926
+ }
927
+
910928 void ToggleFullScreen()
911929 {
912930 GraphicsDevice device = frame.getGraphicsConfiguration().getDevice();
....@@ -933,14 +951,18 @@
933951 // framePanel.setDividerLocation(46); // icons are 24x24
934952
935953 //frame.setVisible(true);
936
-// radio.layout = keepButton;
954
+ radio.layout = keepButton;
937955 //theFrame = null;
938956 keepButton = null;
939
-// radio.layout.doClick();
957
+ radio.layout.doClick();
940958
941959 } else
942960 {
943961 keepButton = radio.layout;
962
+
963
+ radio.layout = twoButton;
964
+ Show3DView();
965
+
944966 //keeprect = frame.getBounds();
945967 // frame.setBounds(0, 0, frame.getToolkit().getScreenSize().width,
946968 // frame.getToolkit().getScreenSize().height);
....@@ -962,6 +984,7 @@
962984 // radio.layout = fullscreenLayout;
963985 // radio.layout.doClick();
964986 //frame.setVisible(true);
987
+ CollapseToolbar();
965988 }
966989 frame.validate();
967990
....@@ -987,6 +1010,8 @@
9871010 object.ExtractBigData(Grafreed.grafreed.universe.versiontable);
9881011 // if (copy == client)
9891012
1013
+ assert(!object.HasBigData());
1014
+
9901015 Object3D versions[] = object.versionlist;
9911016 java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe
9921017 object.versionlist = null;
....@@ -997,6 +1022,8 @@
9971022
9981023 //byte[] compress = Compress(copy);
9991024 Object3D compress = (Object3D)Grafreed.clone(object);
1025
+
1026
+ assert(!compress.HasBigData());
10001027
10011028 object.parent = parent;
10021029
....@@ -1144,6 +1171,7 @@
11441171 JCheckBox selectableCB;
11451172 JCheckBox hideCB;
11461173 JCheckBox link2masterCB;
1174
+ JCheckBox sortCB;
11471175 JCheckBox markCB;
11481176 JCheckBox randomCB;
11491177 JCheckBox speedupCB;
....@@ -1171,6 +1199,7 @@
11711199 cGridBag setupPanel2;
11721200 cGridBag objectCommandsPanel;
11731201 cGridBag pushPanel;
1202
+ cGridBag versionPanel;
11741203 cGridBag fillPanel;
11751204
11761205 JCheckBox AddCheckBox(cGridBag panel, String label, boolean on)
....@@ -1333,6 +1362,11 @@
13331362 obj = o;
13341363 }
13351364 }
1365
+
1366
+ String GetSupportText()
1367
+ {
1368
+ return "Support";
1369
+ }
13361370
13371371 void SetupUI2(ObjEditor oe)
13381372 {
....@@ -1381,11 +1415,14 @@
13811415 rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind);
13821416 rewindCB.setToolTipText("Rewind animation");
13831417
1418
+ sortCB = AddCheckBox(setupPanel2, "Sort", copy.sort);
1419
+ sortCB.setToolTipText("Display from back to front");
1420
+
13841421 randomCB = AddCheckBox(setupPanel2, "Random", copy.random);
13851422 randomCB.setToolTipText("Randomly Rewind (or Go back and forth)");
13861423
1387
- link2masterCB = AddCheckBox(setupPanel2, "Support", copy.link2master);
1388
- link2masterCB.setToolTipText("Attach to support");
1424
+ link2masterCB = AddCheckBox(setupPanel2, GetSupportText(), copy.link2master);
1425
+ link2masterCB.setToolTipText("Link to support");
13891426
13901427 if (Globals.ADVANCED)
13911428 {
....@@ -1417,9 +1454,14 @@
14171454 oe.ctrlPanel.add(objectCommandsPanel);
14181455 oe.ctrlPanel.Return();
14191456
1420
- pushPanel = AddSlider(oe.ctrlPanel, "Push", -1, 1, copy.NORMALPUSH, 1.1); // To have the buttons
1457
+ pushPanel = AddSlider(oe.ctrlPanel, "Push", -1, 1, copy.NORMALPUSH * 100, 1.1); // To have the buttons
14211458 normalpushField = (cNumberSlider)pushPanel.getComponent(1);
1422
- //Return();
1459
+ if (false && copy.versionlist != null && copy.versionindex != -1)
1460
+ {
1461
+ oe.ctrlPanel.Return();
1462
+ versionPanel = AddSlider(oe.ctrlPanel, "Version", 0, copy.VersionCount() - 1, copy.versionindex);
1463
+ versionField = (cNumberSlider)versionPanel.getComponent(1);
1464
+ }
14231465
14241466 oe.ctrlPanel.Return();
14251467
....@@ -1556,6 +1598,8 @@
15561598
15571599 return null;
15581600 }
1601
+
1602
+ int objectTabCount;
15591603
15601604 void SetupViews()
15611605 {
....@@ -1691,6 +1735,12 @@
16911735 //XYZPanel.setName("XYZ");
16921736
16931737 transformPanel.add(resetTransformPanel);
1738
+
1739
+ cGridBag scalePanel = AddSlider(transformPanel, "Scale", 1, 10, 1);
1740
+ scalePanel.preferredHeight = 2;
1741
+ scaleSlider = (cNumberSlider)scalePanel.getComponent(1);
1742
+ transformPanel.add(scalePanel);
1743
+
16941744 transformPanel.add(XYZPanel);
16951745
16961746 /*
....@@ -1728,33 +1778,42 @@
17281778
17291779 //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
17301780 //tmp.setName("Edit");
1731
- objectPanel.add(skyboxPanel);
1732
- objectPanel.setIconAt(0, GetIcon("icons/skybox.jpg"));
1733
- objectPanel.setToolTipTextAt(0, "Backgrounds");
17341781
1735
- objectPanel.add(toolboxPanel);
1736
- objectPanel.setIconAt(1, GetIcon("icons/primitives.png"));
1737
- objectPanel.setToolTipTextAt(1, "Objects & textures");
1782
+ objectTabCount = 0;
1783
+
1784
+ objectTabbedPane.add(skyboxPanel);
1785
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/skybox.jpg"));
1786
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Backgrounds");
1787
+
1788
+ objectTabbedPane.add(toolboxPanel);
1789
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/primitives.png"));
1790
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Objects & textures");
17381791
1739
- objectPanel.add(materialPanel);
1740
- objectPanel.setIconAt(2, GetIcon("icons/material.png"));
1741
- objectPanel.setToolTipTextAt(2, "Material");
1792
+ objectTabbedPane.add(materialPanel);
1793
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/material.png"));
1794
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Material");
17421795
1796
+ figurePanel = new cGridBag();
1797
+ figurePanel.add(new cButton("FIGURES and POSES coming soon!"));
1798
+ objectTabbedPane.add(figurePanel);
1799
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/figure.png"));
1800
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Figures and poses");
1801
+
17431802 // JPanel north = new JPanel(new BorderLayout());
17441803 // north.setName("Edit");
17451804 // north.add(ctrlPanel, BorderLayout.NORTH);
17461805 // objectPanel.add(north);
1747
- objectPanel.add(editPanel);
1748
- objectPanel.setIconAt(3, GetIcon("icons/writewhite.png"));
1749
- objectPanel.setToolTipTextAt(3, "Edit controls");
1806
+ objectTabbedPane.add(editPanel);
1807
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/writewhite.png"));
1808
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Edit controls");
17501809
1751
- objectPanel.add(transformPanel);
1752
- objectPanel.setIconAt(4, GetIcon("icons/XYZ.png"));
1753
- objectPanel.setToolTipTextAt(4, "TRS transform");
1810
+ objectTabbedPane.add(transformPanel);
1811
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/XYZ.png"));
1812
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "TRS transform");
17541813
17551814 patchMaterial = true;
17561815 cameraView.patchMaterial = this;
1757
- objectPanel.setSelectedIndex(2);
1816
+ objectTabbedPane.setSelectedIndex(2);
17581817
17591818 /*
17601819 aConstraints.gridx = 0;
....@@ -1777,8 +1836,8 @@
17771836 /*JTabbedPane*/ scenePanel = new cGridBag();
17781837 scenePanel.preferredWidth = 6;
17791838
1780
- JTabbedPane tabbedPane = new JTabbedPane();
1781
- tabbedPane.add(scrollpane);
1839
+ JTabbedPane sceneTabbedPane = new JTabbedPane();
1840
+ sceneTabbedPane.add(scrollpane);
17821841
17831842 optionsPanel = new cGridBag().setVertical(false);
17841843
....@@ -1786,11 +1845,207 @@
17861845
17871846 AddOptions(optionsPanel); //, aConstraints);
17881847
1789
- tabbedPane.add(FSPane = new cFileSystemPane(this));
1848
+ sceneTabbedPane.add(FSPane = new cFileSystemPane(this));
17901849
1791
- tabbedPane.add(optionsPanel);
1850
+ fullscenePanel = new cGridBag();
1851
+ fullscenePanel.setName("Download");
1852
+ sceneTabbedPane.add(fullscenePanel);
17921853
1793
- scenePanel.add(tabbedPane);
1854
+ cButton fullsceneButton;
1855
+
1856
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/alsace.png", !Globals.NIMBUSLAF));
1857
+ fullsceneButton.setToolTipText("Alsace!");
1858
+ fullsceneButton.addActionListener(new ActionListener()
1859
+ {
1860
+ @Override
1861
+ public void actionPerformed(ActionEvent e)
1862
+ {
1863
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Alsace.gfd", new iCallBack()
1864
+ {
1865
+
1866
+ public void Callback(Object obj)
1867
+ {
1868
+ LoadIt(obj);
1869
+ }
1870
+
1871
+ public void DragGesture()
1872
+ {
1873
+ }
1874
+ });
1875
+ }
1876
+ });
1877
+
1878
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/desertmotel.png", !Globals.NIMBUSLAF));
1879
+ fullsceneButton.setToolTipText("Desert Motel!");
1880
+ fullsceneButton.addActionListener(new ActionListener()
1881
+ {
1882
+ @Override
1883
+ public void actionPerformed(ActionEvent e)
1884
+ {
1885
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/DesertMotel.gfd", new iCallBack()
1886
+ {
1887
+
1888
+ public void Callback(Object obj)
1889
+ {
1890
+ LoadIt(obj);
1891
+ }
1892
+
1893
+ public void DragGesture()
1894
+ {
1895
+ }
1896
+ });
1897
+ }
1898
+ });
1899
+
1900
+ fullscenePanel.Return();
1901
+
1902
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/london.png", !Globals.NIMBUSLAF));
1903
+ fullsceneButton.setToolTipText("Old London!");
1904
+ fullsceneButton.addActionListener(new ActionListener()
1905
+ {
1906
+ @Override
1907
+ public void actionPerformed(ActionEvent e)
1908
+ {
1909
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack()
1910
+ {
1911
+
1912
+ public void Callback(Object obj)
1913
+ {
1914
+ LoadIt(obj);
1915
+ }
1916
+
1917
+ public void DragGesture()
1918
+ {
1919
+ }
1920
+ });
1921
+ }
1922
+ });
1923
+
1924
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/skullcove.png", !Globals.NIMBUSLAF));
1925
+ fullsceneButton.setToolTipText("Skull Cove Island!");
1926
+ fullsceneButton.addActionListener(new ActionListener()
1927
+ {
1928
+ @Override
1929
+ public void actionPerformed(ActionEvent e)
1930
+ {
1931
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/SkullCoveIsland.gfd", new iCallBack()
1932
+ {
1933
+
1934
+ public void Callback(Object obj)
1935
+ {
1936
+ LoadIt(obj);
1937
+ }
1938
+
1939
+ public void DragGesture()
1940
+ {
1941
+ }
1942
+ });
1943
+ }
1944
+ });
1945
+
1946
+ fullscenePanel.Return();
1947
+
1948
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/tuscany.png", !Globals.NIMBUSLAF));
1949
+ fullsceneButton.setToolTipText("Tuscany!");
1950
+ fullsceneButton.addActionListener(new ActionListener()
1951
+ {
1952
+ @Override
1953
+ public void actionPerformed(ActionEvent e)
1954
+ {
1955
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Tuscany.gfd", new iCallBack()
1956
+ {
1957
+
1958
+ public void Callback(Object obj)
1959
+ {
1960
+ LoadIt(obj);
1961
+ }
1962
+
1963
+ public void DragGesture()
1964
+ {
1965
+ }
1966
+ });
1967
+ }
1968
+ });
1969
+
1970
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/venice.png", !Globals.NIMBUSLAF));
1971
+ fullsceneButton.setToolTipText("Venice!");
1972
+ fullsceneButton.addActionListener(new ActionListener()
1973
+ {
1974
+ @Override
1975
+ public void actionPerformed(ActionEvent e)
1976
+ {
1977
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack()
1978
+ {
1979
+
1980
+ public void Callback(Object obj)
1981
+ {
1982
+ LoadIt(obj);
1983
+ }
1984
+
1985
+ public void DragGesture()
1986
+ {
1987
+ }
1988
+ });
1989
+ }
1990
+ });
1991
+
1992
+ fullscenePanel.Return();
1993
+
1994
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/viking.png", !Globals.NIMBUSLAF));
1995
+ fullsceneButton.setToolTipText("Viking Village!");
1996
+ fullsceneButton.addActionListener(new ActionListener()
1997
+ {
1998
+ @Override
1999
+ public void actionPerformed(ActionEvent e)
2000
+ {
2001
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/VikingVillage.gfd", new iCallBack()
2002
+ {
2003
+
2004
+ public void Callback(Object obj)
2005
+ {
2006
+ LoadIt(obj);
2007
+ }
2008
+
2009
+ public void DragGesture()
2010
+ {
2011
+ }
2012
+ });
2013
+ }
2014
+ });
2015
+
2016
+ fullscenePanel.add(fullsceneButton = GetButton("fullscenes/yvoire.png", !Globals.NIMBUSLAF));
2017
+ fullsceneButton.setToolTipText("Yvoire!");
2018
+ fullsceneButton.addActionListener(new ActionListener()
2019
+ {
2020
+ @Override
2021
+ public void actionPerformed(ActionEvent e)
2022
+ {
2023
+ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Yvoire.gfd", new iCallBack()
2024
+ {
2025
+
2026
+ public void Callback(Object obj)
2027
+ {
2028
+ LoadIt(obj);
2029
+ }
2030
+
2031
+ public void DragGesture()
2032
+ {
2033
+ }
2034
+ });
2035
+ }
2036
+ });
2037
+
2038
+ fullscenePanel.Return();
2039
+
2040
+ fullscenePanel.add(new cGridBag());
2041
+ fullscenePanel.add(new cGridBag());
2042
+ fullscenePanel.Return();
2043
+ fullscenePanel.add(new cGridBag());
2044
+ fullscenePanel.add(new cGridBag());
2045
+
2046
+ sceneTabbedPane.add(optionsPanel);
2047
+
2048
+ scenePanel.add(sceneTabbedPane);
17942049
17952050 cGridBag creditsPanel = new cGridBag().setVertical(true);
17962051 creditsPanel.setName("Credits");
....@@ -1879,14 +2134,14 @@
18792134 creditsPanel.add(new cGridBag());
18802135 }
18812136
1882
- tabbedPane.add(creditsPanel);
1883
- tabbedPane.setToolTipTextAt(3, "Credits");
2137
+ sceneTabbedPane.add(creditsPanel);
2138
+ sceneTabbedPane.setToolTipTextAt(3, "Credits");
18842139
1885
- if (Globals.ADVANCED)
2140
+ if (Globals.SHOWINFO)
18862141 {
1887
- tabbedPane.add(infoPanel);
1888
- tabbedPane.setIconAt(4, GetIcon("icons/info.png"));
1889
- tabbedPane.setToolTipTextAt(4, "Information");
2142
+ objectTabbedPane.add(infoPanel);
2143
+ objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/info.png"));
2144
+ objectTabbedPane.setToolTipTextAt(objectTabCount++, "Information");
18902145 }
18912146
18922147 /*
....@@ -1967,11 +2222,16 @@
19672222 {
19682223 if ((Integer)pce.getOldValue() == 1)
19692224 {
1970
- if (radio.layout != expandedLayout)
2225
+ if (CameraPane.FULLSCREEN)
19712226 {
1972
- radio.layout = expandedLayout;
1973
- radio.layout.doClick();
2227
+ ToggleFullScreen();
19742228 }
2229
+
2230
+// if (radio.layout != expandedLayout)
2231
+// {
2232
+// radio.layout = expandedLayout;
2233
+// radio.layout.doClick();
2234
+// }
19752235 }
19762236 }
19772237 });
....@@ -1995,7 +2255,7 @@
19952255
19962256 // aConstraints = gbc; // (GridBagConstraints) GrafreeD.clone(gbc);
19972257
1998
- frame.setSize(1280, 860);
2258
+ frame.setSize(1280, 900);
19992259
20002260 cameraView.requestFocusInWindow();
20012261
....@@ -2370,7 +2630,7 @@
23702630 {
23712631 public void mouseClicked(MouseEvent e)
23722632 {
2373
- borderfadeField.setFloat(0.5);
2633
+ borderfadeField.setFloat(0.4);
23742634 opacityField.setFloat(0.75);
23752635
23762636 materialtouched = true;
....@@ -2429,13 +2689,55 @@
24292689 cameraField.setFloat(0.001);
24302690 specularField.setFloat(0.001);
24312691 fakedepthField.setFloat(0.001);
2432
- opacityField.setFloat(0.6);
2692
+ opacityField.setFloat(0.4);
24332693
24342694 materialtouched = true;
24352695 applySelf();
24362696 }
24372697 });
24382698 presetpanel.add(shadowShader);
2699
+
2700
+ cLabel para0 = GetLabel("icons/shadericons/parallax0.png", !Globals.NIMBUSLAF);
2701
+ para0.setToolTipText("No parallax");
2702
+ para0.addMouseListener(new MouseAdapter()
2703
+ {
2704
+ public void mouseClicked(MouseEvent e)
2705
+ {
2706
+ parallaxField.setFloat(0.125);
2707
+
2708
+ materialtouched = true;
2709
+ applySelf();
2710
+ }
2711
+ });
2712
+ presetpanel.add(para0);
2713
+
2714
+ cLabel para1 = GetLabel("icons/shadericons/parallax1.png", !Globals.NIMBUSLAF);
2715
+ para1.setToolTipText("With parallax");
2716
+ para1.addMouseListener(new MouseAdapter()
2717
+ {
2718
+ public void mouseClicked(MouseEvent e)
2719
+ {
2720
+ parallaxField.setFloat(0.13);
2721
+
2722
+ materialtouched = true;
2723
+ applySelf();
2724
+ }
2725
+ });
2726
+ presetpanel.add(para1);
2727
+
2728
+ cLabel para2 = GetLabel("icons/shadericons/parallax2.png", !Globals.NIMBUSLAF);
2729
+ para2.setToolTipText("Reset parallax");
2730
+ para2.addMouseListener(new MouseAdapter()
2731
+ {
2732
+ public void mouseClicked(MouseEvent e)
2733
+ {
2734
+ parallaxField.setFloat(0.14);
2735
+
2736
+ materialtouched = true;
2737
+ applySelf();
2738
+ }
2739
+ });
2740
+ presetpanel.add(para2);
24392741
24402742 cGridBag panel = new cGridBag().setVertical(true);
24412743
....@@ -2685,7 +2987,7 @@
26852987 cGridBag parallax = new cGridBag();
26862988 parallax.add(parallaxLabel = new JLabel("Parallax")); // , aConstraints);
26872989 parallaxLabel.setHorizontalAlignment(SwingConstants.TRAILING);
2688
- parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.5, -0.25)); // , aConstraints);
2990
+ parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.25, -0.125)); // , aConstraints);
26892991 colorSection.add(parallax);
26902992
26912993 //panel.add(new JSeparator());
....@@ -3739,7 +4041,7 @@
37394041 shadowField.setFloat(mat.shadow);
37404042 textureField.setFloat(mat.texture);
37414043 opacityField.setFloat(mat.opacity);
3742
- parallaxField.setFloat(mat.parallax + 0.25f);
4044
+ parallaxField.setFloat(mat.parallax + 0.125f);
37434045 fakedepthField.setFloat(mat.fakedepth);
37444046 shadowbiasField.setFloat(mat.shadowbias);
37454047 bumpField.setInteger(1); // dec 2013
....@@ -4030,14 +4332,34 @@
40304332 copy.Touch(); // display list issue
40314333 objEditor.refreshContents(true); // To show item colors
40324334 return;
4335
+ } else if (event.getSource() == sortCB)
4336
+ {
4337
+ copy.sort ^= true;
4338
+ objEditor.refreshContents();
4339
+ return;
40334340 } else if (event.getSource() == link2masterCB)
40344341 {
40354342 copy.link2master ^= true;
4343
+ objEditor.refreshContents();
40364344 return;
40374345 }
40384346 if (event.getSource() == randomCB)
40394347 {
40404348 copy.random ^= true;
4349
+ if (this instanceof RandomEditor)
4350
+ {
4351
+ cGridBag itemPanel = ((RandomEditor)this).itemPanel;
4352
+ itemPanel.getComponent(0).setEnabled(!copy.random);
4353
+
4354
+ // Tooltip?
4355
+ if (copy.random)
4356
+ {
4357
+ }
4358
+ else
4359
+ {
4360
+ }
4361
+ }
4362
+
40414363 objEditor.refreshContents();
40424364 return;
40434365 }
....@@ -4273,6 +4595,12 @@
42734595
42744596 void New()
42754597 {
4598
+ copy.skyboxname = "cubemaps/penguins-skyboxes/yonder";
4599
+ copy.skyboxext = "jpg";
4600
+
4601
+ copy.versionlist = null;
4602
+ copy.versionindex = -1;
4603
+
42764604 while (copy.Size() > 0)
42774605 {
42784606 copy.remove(0);
....@@ -4283,9 +4611,15 @@
42834611 if (copy == Grafreed.grafreed.universe)
42844612 {
42854613 CreateCameras();
4286
- cameraView.SetCamera(GetCamera(copy, 0));
4614
+ cameraView.SetCamera(GetCamera(copy, 0), true);
4615
+ cameraView.SetLight(GetCamera(copy, 4));
42874616 }
4617
+
42884618 ResetModel();
4619
+
4620
+ //DuplicateVersion();
4621
+
4622
+ this.SetVersionStates();
42894623 objEditor.refreshContents();
42904624 }
42914625
....@@ -4423,17 +4757,23 @@
44234757 copy.versionindex -= 1;
44244758
44254759 if (copy.versionindex != -1)
4426
- CopyChanged();
4760
+ CopyChanged(copy);
44274761
44284762 SetVersionStates();
4763
+
4764
+ SetCameras(false);
44294765 }
44304766
4431
- public boolean Save(boolean user)
4767
+ public boolean DuplicateVersion() // boolean user)
44324768 {
44334769 System.err.println("Save");
4434
- Replace();
4770
+ //Replace();
44354771
4436
- //cRadio tab = GetCurrentTab();
4772
+ if (copy.versionlist == null)
4773
+ {
4774
+ copy.versionlist = new Object3D[100];
4775
+ copy.versionindex = -1;
4776
+ }
44374777
44384778 Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"?
44394779
....@@ -4501,20 +4841,25 @@
45014841 {
45024842 Object3D selection = new Object3D();
45034843
4504
- for (int i = 0; i < copy.selection.size(); i++)
4844
+ if (objEditor.copy.selection == null)
45054845 {
4506
- Object3D elem = copy.selection.elementAt(i);
4846
+ objEditor.copy.selection = new Object3D();
4847
+ }
4848
+
4849
+ for (int i = 0; i < objEditor.copy.selection.size(); i++)
4850
+ {
4851
+ Object3D elem = objEditor.copy.selection.elementAt(i);
45074852
4508
- Object3D obj = copy.GetObject(elem.GetUUID());
4853
+ Object3D obj = objEditor.copy.GetObject(elem.GetUUID());
45094854
45104855 if (obj == null)
45114856 {
4512
- copy.selection.remove(i--);
4857
+ objEditor.copy.selection.remove(i--);
45134858 }
45144859 else
45154860 {
45164861 selection.add(obj);
4517
- copy.selection.setElementAt(obj, i);
4862
+ objEditor.copy.selection.setElementAt(obj, i);
45184863 }
45194864 }
45204865
....@@ -4527,44 +4872,44 @@
45274872 //refreshContents(false);
45284873 }
45294874
4530
- void CopyChanged()
4875
+ void CopyChanged(Object3D changed)
45314876 {
4532
- Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]);
4877
+ Object3D obj = (Object3D)Grafreed.clone(changed.versionlist[copy.versionindex]);
45334878
4534
- SetVersionStates();
4879
+ assert(!obj.HasBigData());
45354880
45364881 boolean temp = CameraPane.SWITCH;
45374882 CameraPane.SWITCH = false;
45384883
4539
- copy.ExtractBigData(Grafreed.grafreed.universe.versiontable);
4884
+ changed.ExtractBigData(Grafreed.grafreed.universe.versiontable);
45404885
4541
- copy.clear();
4542
-
4543
- copy.skyboxname = obj.skyboxname;
4544
- copy.skyboxext = obj.skyboxext;
4886
+ changed.clear();
4887
+
4888
+ obj.deepCopyNode(changed);
45454889
45464890 for (int i=0; i<obj.Size(); i++)
45474891 {
4548
- copy.add(obj.get(i));
4892
+ changed.add(obj.get(i));
45494893 }
45504894
4551
- copy.RestoreBigData(Grafreed.grafreed.universe.versiontable);
4895
+ changed.RestoreBigData(Grafreed.grafreed.universe.versiontable);
45524896
45534897 CameraPane.SWITCH = temp;
45544898
4555
- RefreshSelection();
4899
+ if (objEditor == this)
4900
+ RefreshSelection();
45564901 //assert(hashtable.isEmpty());
45574902
4558
- copy.Touch();
4903
+ objEditor.copy.Touch();
45594904
45604905 ResetModel();
4561
- copy.HardTouch(); // recompile?
4906
+ objEditor.copy.HardTouch(); // recompile?
45624907
45634908 cRadio ab;
4564
- for (java.util.Enumeration e = buttonGroup.getElements(); e.hasMoreElements();)
4909
+ for (java.util.Enumeration e = objEditor.buttonGroup.getElements(); e.hasMoreElements();)
45654910 {
45664911 ab = (cRadio)e.nextElement();
4567
- Object3D test = copy.GetObject(ab.object.GetUUID());
4912
+ Object3D test = objEditor.copy.GetObject(ab.object.GetUUID());
45684913 //ab.camera = (Camera)copy.GetObject(ab.camera.GetUUID());
45694914 if (test != null)
45704915 {
....@@ -4573,7 +4918,7 @@
45734918 }
45744919 }
45754920
4576
- refreshContents(true);
4921
+ objEditor.refreshContents(true);
45774922 }
45784923
45794924 cButton previousVersionButton;
....@@ -4587,15 +4932,7 @@
45874932
45884933 int VersionCount()
45894934 {
4590
- int count = 0;
4591
-
4592
- for (int i = copy.versionlist.length; --i >= 0;)
4593
- {
4594
- if (copy.versionlist[i] != null)
4595
- count++;
4596
- }
4597
-
4598
- return count;
4935
+ return copy.VersionCount();
45994936 }
46004937
46014938 public cGridBag versionSliderPane;
....@@ -4607,7 +4944,7 @@
46074944
46084945 //cRadio tab = GetCurrentTab();
46094946
4610
- if (copy.versionlist == null)
4947
+ if (copy.versionindex == -2)
46114948 {
46124949 saveVersionButton.setEnabled(false);
46134950 restoreButton.setEnabled(false);
....@@ -4623,7 +4960,7 @@
46234960 replaceButton.setEnabled(copy.versionindex != -1);
46244961
46254962 previousVersionButton.setEnabled(copy.versionindex > 0);
4626
- nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null);
4963
+ nextVersionButton.setEnabled(copy.versionlist != null && copy.versionlist[copy.versionindex + 1] != null);
46274964
46284965 deleteVersionButton.setEnabled(copy.versionindex != -1);
46294966 //copy.versionlist[copy.versionindex + 1] != null);
....@@ -4644,7 +4981,7 @@
46444981 // Option?
46454982 Replace();
46464983
4647
- System.err.println("Undo");
4984
+ //System.err.println("Previous");
46484985
46494986 //cRadio tab = GetCurrentTab();
46504987
....@@ -4669,7 +5006,11 @@
46695006
46705007 copy.versionindex -= 1;
46715008
4672
- CopyChanged();
5009
+ CopyChanged(copy);
5010
+
5011
+ SetVersionStates();
5012
+
5013
+ SetCameras(false);
46735014
46745015 return true;
46755016 }
....@@ -4687,7 +5028,11 @@
46875028 }
46885029
46895030 //CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex]));
4690
- CopyChanged();
5031
+ CopyChanged(copy);
5032
+
5033
+ SetVersionStates();
5034
+
5035
+ SetCameras(false);
46915036
46925037 return true;
46935038 }
....@@ -4698,7 +5043,8 @@
46985043
46995044 //cRadio tab = GetCurrentTab();
47005045
4701
- if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null)
5046
+ // < 0 means == -2 || == -1
5047
+ if (copy.versionindex < 0 || copy.versionlist[copy.versionindex] == null)
47025048 {
47035049 // No version yet. OK. java.awt.Toolkit.getDefaultToolkit().beep();
47045050 return false;
....@@ -4724,24 +5070,46 @@
47245070
47255071 copy.versionindex += 1;
47265072
4727
- CopyChanged();
5073
+ CopyChanged(copy);
47285074
47295075 //if (!tab.user[tab.versionindex])
47305076 // tab.graphs[tab.versionindex] = null;
5077
+
5078
+ SetVersionStates();
5079
+
5080
+ SetCameras(false);
47315081 }
47325082
5083
+ void SetCameras(boolean set)
5084
+ {
5085
+ if (copy == Grafreed.grafreed.universe)
5086
+ {
5087
+ Camera neweye = (Camera)copy.GetObject(cameraView.cameras[cameraView.cameracount^1].GetUUID());
5088
+ Camera newlight = (Camera)copy.GetObject(cameraView.LightCamera().GetUUID());
5089
+
5090
+ cameraView.SetCamera(neweye, set);
5091
+ cameraView.SetLight(newlight);
5092
+ }
5093
+ }
5094
+
5095
+ void ImportGFD(String url)
5096
+ {
5097
+ objEditor.ReadGFD(url, objEditor);
5098
+ }
5099
+
47335100 void ImportGFD()
47345101 {
47355102 FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD);
4736
- browser.show();
5103
+ browser.setVisible(true);
47375104 String filename = browser.getFile();
47385105 if (filename != null && filename.length() > 0)
47395106 {
47405107 String fullname = browser.getDirectory() + filename;
47415108
47425109 //Object3D readobj =
4743
- objEditor.ReadGFD(fullname, objEditor);
5110
+ // objEditor.ReadGFD(fullname, objEditor);
47445111 //makeSomething(readobj);
5112
+ ImportGFD(fullname);
47455113 }
47465114 }
47475115
....@@ -4964,7 +5332,7 @@
49645332 current.shadow = (float) shadowField.getFloat();
49655333 current.texture = (float) textureField.getFloat();
49665334 current.opacity = (float) opacityField.getFloat();
4967
- current.parallax = (float) parallaxField.getFloat() - 0.25f;
5335
+ current.parallax = (float) parallaxField.getFloat() - 0.125f;
49685336 current.fakedepth = (float) fakedepthField.getFloat();
49695337 current.shadowbias = (float) shadowbiasField.getFloat();
49705338
....@@ -5056,10 +5424,18 @@
50565424 }
50575425
50585426 cNumberSlider versionSlider;
5427
+ cNumberSlider versionField;
50595428
5429
+ cNumberSlider scaleSlider;
5430
+
5431
+ void ScaleSelection(int scale)
5432
+ {
5433
+ }
5434
+
50605435 public void stateChanged(ChangeEvent e)
50615436 {
50625437 // assert(false);
5438
+ // Main version slider
50635439 if (e.getSource() == versionSlider)
50645440 {
50655441 if (muteSlider)
....@@ -5072,9 +5448,33 @@
50725448 if (version != -1 && copy.versionlist[version] != null)
50735449 {
50745450 copy.versionindex = version;
5075
- CopyChanged();
5451
+ CopyChanged(copy);
5452
+ SetVersionStates();
5453
+ SetCameras(false);
50765454 }
50775455
5456
+ return;
5457
+ }
5458
+
5459
+ // Version slider of edited object
5460
+ if (e.getSource() == versionField)
5461
+ {
5462
+ int version = versionField.getInteger();
5463
+
5464
+ if (version != -1 && copy.versionindex != version && copy.versionlist[version] != null)
5465
+ {
5466
+ copy.versionindex = version;
5467
+ CopyChanged(copy);
5468
+ }
5469
+
5470
+ return;
5471
+ }
5472
+
5473
+ if (e.getSource() == scaleSlider)
5474
+ {
5475
+ int scale = scaleSlider.getInteger();
5476
+
5477
+ ScaleSelection(scale);
50785478 return;
50795479 }
50805480
....@@ -5167,7 +5567,7 @@
51675567 }
51685568
51695569 if (normalpushField != null)
5170
- copy.NORMALPUSH = (float)normalpushField.getFloat()/100;
5570
+ copy.NORMALPUSH = (float)normalpushField.getFloat() / 100;
51715571 }
51725572
51735573 void SnapObject()
....@@ -5315,7 +5715,7 @@
53155715 interest.y = k * interest.y + (1 - k) * height;
53165716 }
53175717
5318
- CameraPane.zoomonce = true;
5718
+ // CameraPane.zoomonce = true;
53195719
53205720 // june 2014
53215721 Camera parentcam = cameraView.manipCamera;
....@@ -5389,7 +5789,7 @@
53895789
53905790 objEditor.ScreenFit(obj, false);
53915791
5392
- cameraView.pingthread.StepToTarget(true); // aout 2013
5792
+ cameraView.pingthread.StepToTarget(); //true); // aout 2013
53935793 refreshContents();
53945794 }
53955795
....@@ -5541,7 +5941,7 @@
55415941 void ResetModel()
55425942 {
55435943 //assert(copy instanceof Composite);
5544
- Object3D /*Composite*/ group = (Object3D /*Composite*/) copy;
5944
+ Object3D /*Composite*/ group = (Object3D /*Composite*/) objEditor.copy;
55455945
55465946 // necessary? group.selection = new Object3D(); // java.util.Vector();
55475947
....@@ -5552,14 +5952,14 @@
55525952 //group.refreshEditWindow();
55535953 //refreshContents();
55545954
5555
- if (copy.selection == null)
5955
+ if (objEditor.copy.selection == null)
55565956 {
5557
- copy.selection = new Object3D();
5957
+ objEditor.copy.selection = new Object3D();
55585958 }
55595959
5560
- for (int j = 0; j < copy.selection.size(); j++)
5960
+ for (int j = 0; j < objEditor.copy.selection.size(); j++)
55615961 {
5562
- Object3D item = copy.selection.get(j);
5962
+ Object3D item = objEditor.copy.selection.get(j);
55635963
55645964 if (item instanceof cGroup && ((cGroup) item).transientlink)
55655965 {
....@@ -5568,15 +5968,15 @@
55685968
55695969 if (item.count <= 1) // ??? == 0)
55705970 {
5571
- copy.selection.remove(item);
5971
+ objEditor.copy.selection.remove(item);
55725972 }
55735973 }
55745974
55755975 boolean first = true;
55765976
5577
- for (int i = copy.selection.size(); --i >= 0;)
5977
+ for (int i = objEditor.copy.selection.size(); --i >= 0;)
55785978 {
5579
- Object3D item = copy.selection.get(i);
5979
+ Object3D item = objEditor.copy.selection.get(i);
55805980
55815981 if (item instanceof cGroup && ((cGroup) item).transientlink)
55825982 {
....@@ -5666,10 +6066,27 @@
56666066 {
56676067 Object3D readobj = null;
56686068
6069
+ java.net.URL url = null;
6070
+
6071
+ try
6072
+ {
6073
+ url = new java.net.URL(fullname);
6074
+ } catch (Exception e)
6075
+ {
6076
+ try
6077
+ {
6078
+ url = new java.net.URL("file:///" + fullname);
6079
+ } catch (Exception e2)
6080
+ {
6081
+ e2.printStackTrace();
6082
+ }
6083
+ }
6084
+
56696085 try
56706086 {
56716087 // Try compressed version first.
5672
- java.io.FileInputStream istream = new java.io.FileInputStream(fullname);
6088
+ java.io.InputStream istream //= new java.io.FileInputStream(fullname);
6089
+ = url.openStream();
56736090 java.util.zip.GZIPInputStream zstream = new java.util.zip.GZIPInputStream(istream);
56746091 java.io.ObjectInputStream p = new java.io.ObjectInputStream(zstream);
56756092
....@@ -5684,7 +6101,8 @@
56846101
56856102 try
56866103 {
5687
- java.io.FileInputStream istream = new java.io.FileInputStream(fullname);
6104
+ java.io.InputStream istream //= new java.io.FileInputStream(fullname);
6105
+ = url.openStream();
56886106 java.io.ObjectInputStream p = new java.io.ObjectInputStream(istream);
56896107
56906108 readobj = (Object3D) p.readObject();
....@@ -5782,12 +6200,11 @@
57826200 // // oct 2012 if(cam.parent == null)
57836201 // cam.parent = copy.get(0); // cams;
57846202 // }
5785
- cameraView.SetCamera((Camera) cams.get(0));
5786
- // MAJOR CRASH!!
5787
- cameraView.SetLight((Camera) cams.get(4));
5788
- topView.SetCamera((Camera) cams.get(1));
5789
- frontView.SetCamera((Camera) cams.get(2));
5790
- sideView.SetCamera((Camera) cams.get(3));
6203
+ cameraView.SetCamera((Camera) cams.get(0), true);
6204
+ cameraView.SetLight((Camera) cams.get(4)); // MAJOR CRASH!!
6205
+ topView.SetCamera((Camera) cams.get(1), true);
6206
+ frontView.SetCamera((Camera) cams.get(2), true);
6207
+ sideView.SetCamera((Camera) cams.get(3), true);
57916208
57926209 // copy.get(0).clear();
57936210 // copy.get(0).addAll(cams);
....@@ -5829,6 +6246,8 @@
58296246
58306247 //? SetUndoStates();
58316248
6249
+ cameraView.RevertCamera();
6250
+
58326251 ResetModel();
58336252 copy.HardTouch(); // recompile?
58346253 refreshContents();
....@@ -5840,7 +6259,7 @@
58406259 if (Grafreed.standAlone)
58416260 {
58426261 FileDialog browser = new FileDialog(frame, "Open", FileDialog.LOAD);
5843
- browser.show();
6262
+ browser.setVisible(true);
58446263 String filename = browser.getFile();
58456264 if (filename != null && filename.length() > 0)
58466265 {
....@@ -6163,12 +6582,14 @@
61636582 cGridBag skyboxPanel;
61646583 cGridBag materialPanel;
61656584 cGridBag ctrlPanel;
6585
+ cGridBag figurePanel;
6586
+ cGridBag fullscenePanel;
61666587
61676588 JScrollPane infoPanel;
61686589
61696590 cGridBag optionsPanel;
61706591
6171
- JTabbedPane objectPanel;
6592
+ JTabbedPane objectTabbedPane;
61726593 boolean materialFlushed;
61736594 Object3D latestObject;
61746595