.. | .. |
---|
24 | 24 | matrix.Matrix; |
---|
25 | 25 | |
---|
26 | 26 | import grafeme.ui.*; |
---|
| 27 | +import org.xj3d.ui.swt.widgets.ImageLoader; |
---|
27 | 28 | |
---|
28 | 29 | class ObjEditor /*extends JFrame*/ implements iCallBack, ObjectUI, |
---|
29 | 30 | ActionListener, ChangeListener, |
---|
.. | .. |
---|
97 | 98 | |
---|
98 | 99 | cButton GetButton(String name, boolean border) |
---|
99 | 100 | { |
---|
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); |
---|
103 | 106 | else |
---|
104 | 107 | return new cButton(name, border); |
---|
105 | 108 | } |
---|
.. | .. |
---|
136 | 139 | { |
---|
137 | 140 | BufferedImage image; |
---|
138 | 141 | |
---|
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 | + } |
---|
142 | 154 | else |
---|
143 | 155 | image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); |
---|
144 | 156 | |
---|
.. | .. |
---|
495 | 507 | //povItem.addActionListener(this); |
---|
496 | 508 | closeItem.addActionListener(this); |
---|
497 | 509 | |
---|
498 | | - objectPanel = new JTabbedPane(); |
---|
| 510 | + objectTabbedPane = new JTabbedPane(); |
---|
499 | 511 | |
---|
500 | 512 | ChangeListener changeListener = new ChangeListener() |
---|
501 | 513 | { |
---|
.. | .. |
---|
546 | 558 | // } |
---|
547 | 559 | // } |
---|
548 | 560 | // } |
---|
549 | | - cameraView.transformMode = objectPanel.getSelectedIndex() == 4; |
---|
| 561 | + cameraView.transformMode = objectTabbedPane.getSelectedIndex() == 5; |
---|
550 | 562 | |
---|
551 | 563 | // refreshContents(false); // To refresh Info tab |
---|
552 | 564 | cameraView.repaint(); |
---|
553 | 565 | } |
---|
554 | 566 | }; |
---|
555 | | - objectPanel.addChangeListener(changeListener); |
---|
| 567 | + objectTabbedPane.addChangeListener(changeListener); |
---|
556 | 568 | |
---|
557 | 569 | toolbarPanel = new JPanel(); |
---|
558 | 570 | toolbarPanel.setName("Toolbar"); |
---|
.. | .. |
---|
595 | 607 | //infoPanel.setLayout(new BorderLayout()); |
---|
596 | 608 | //infoPanel.add(createTextPane()); |
---|
597 | 609 | |
---|
598 | | - mainPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, objectPanel); |
---|
| 610 | + mainPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treePanel, objectTabbedPane); |
---|
599 | 611 | mainPanel.setName("Main"); |
---|
600 | 612 | mainPanel.setContinuousLayout(true); |
---|
601 | 613 | mainPanel.setOneTouchExpandable(true); |
---|
.. | .. |
---|
787 | 799 | // SendInfo(" delay: " + sel.delay + newline, "regular"); |
---|
788 | 800 | // live, hide, ... |
---|
789 | 801 | //?? SendInfo(" Orig: " + maxima + newline, "regular"); |
---|
| 802 | + if (sel.GetTextures().pigmentdata != null) |
---|
| 803 | + si.SendInfo(" EMBEDDED ", "regular"); |
---|
790 | 804 | si.SendInfo((debug ? " Texture: " : " ") + sel.GetTextures(), "bold"); |
---|
791 | 805 | // SendInfo((debug ? " Material: " : " ") + sel.material + newline, "regular"); |
---|
792 | 806 | if (sel instanceof cMesh) |
---|
.. | .. |
---|
897 | 911 | |
---|
898 | 912 | cButton minButton; |
---|
899 | 913 | cButton maxButton; |
---|
900 | | - cButton fullButton; |
---|
| 914 | + cButton fullScreenButton; |
---|
901 | 915 | cButton collapseButton; |
---|
902 | 916 | cButton maximize3DButton; |
---|
903 | 917 | |
---|
| 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 | + |
---|
904 | 928 | void ToggleFullScreen() |
---|
905 | 929 | { |
---|
906 | 930 | GraphicsDevice device = frame.getGraphicsConfiguration().getDevice(); |
---|
.. | .. |
---|
927 | 951 | // framePanel.setDividerLocation(46); // icons are 24x24 |
---|
928 | 952 | |
---|
929 | 953 | //frame.setVisible(true); |
---|
930 | | -// radio.layout = keepButton; |
---|
| 954 | + radio.layout = keepButton; |
---|
931 | 955 | //theFrame = null; |
---|
932 | 956 | keepButton = null; |
---|
933 | | -// radio.layout.doClick(); |
---|
| 957 | + radio.layout.doClick(); |
---|
934 | 958 | |
---|
935 | 959 | } else |
---|
936 | 960 | { |
---|
937 | 961 | keepButton = radio.layout; |
---|
| 962 | + |
---|
| 963 | + radio.layout = twoButton; |
---|
| 964 | + Show3DView(); |
---|
| 965 | + |
---|
938 | 966 | //keeprect = frame.getBounds(); |
---|
939 | 967 | // frame.setBounds(0, 0, frame.getToolkit().getScreenSize().width, |
---|
940 | 968 | // frame.getToolkit().getScreenSize().height); |
---|
.. | .. |
---|
956 | 984 | // radio.layout = fullscreenLayout; |
---|
957 | 985 | // radio.layout.doClick(); |
---|
958 | 986 | //frame.setVisible(true); |
---|
| 987 | + CollapseToolbar(); |
---|
959 | 988 | } |
---|
960 | 989 | frame.validate(); |
---|
961 | 990 | |
---|
.. | .. |
---|
981 | 1010 | object.ExtractBigData(Grafreed.grafreed.universe.versiontable); |
---|
982 | 1011 | // if (copy == client) |
---|
983 | 1012 | |
---|
| 1013 | + assert(!object.HasBigData()); |
---|
| 1014 | + |
---|
984 | 1015 | Object3D versions[] = object.versionlist; |
---|
985 | 1016 | java.util.Hashtable<java.util.UUID, Object3D> versiontable = object.versiontable; // if Grafreed.grafreed.universe |
---|
986 | 1017 | object.versionlist = null; |
---|
.. | .. |
---|
991 | 1022 | |
---|
992 | 1023 | //byte[] compress = Compress(copy); |
---|
993 | 1024 | Object3D compress = (Object3D)Grafreed.clone(object); |
---|
| 1025 | + |
---|
| 1026 | + assert(!compress.HasBigData()); |
---|
994 | 1027 | |
---|
995 | 1028 | object.parent = parent; |
---|
996 | 1029 | |
---|
.. | .. |
---|
1138 | 1171 | JCheckBox selectableCB; |
---|
1139 | 1172 | JCheckBox hideCB; |
---|
1140 | 1173 | JCheckBox link2masterCB; |
---|
| 1174 | + JCheckBox sortCB; |
---|
1141 | 1175 | JCheckBox markCB; |
---|
1142 | 1176 | JCheckBox randomCB; |
---|
1143 | 1177 | JCheckBox speedupCB; |
---|
.. | .. |
---|
1328 | 1362 | obj = o; |
---|
1329 | 1363 | } |
---|
1330 | 1364 | } |
---|
| 1365 | + |
---|
| 1366 | + String GetSupportText() |
---|
| 1367 | + { |
---|
| 1368 | + return "Support"; |
---|
| 1369 | + } |
---|
1331 | 1370 | |
---|
1332 | 1371 | void SetupUI2(ObjEditor oe) |
---|
1333 | 1372 | { |
---|
.. | .. |
---|
1376 | 1415 | rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind); |
---|
1377 | 1416 | rewindCB.setToolTipText("Rewind animation"); |
---|
1378 | 1417 | |
---|
| 1418 | + sortCB = AddCheckBox(setupPanel2, "Sort", copy.sort); |
---|
| 1419 | + sortCB.setToolTipText("Display from back to front"); |
---|
| 1420 | + |
---|
1379 | 1421 | randomCB = AddCheckBox(setupPanel2, "Random", copy.random); |
---|
1380 | 1422 | randomCB.setToolTipText("Randomly Rewind (or Go back and forth)"); |
---|
1381 | 1423 | |
---|
1382 | | - link2masterCB = AddCheckBox(setupPanel2, "Support", copy.link2master); |
---|
1383 | | - link2masterCB.setToolTipText("Attach to support"); |
---|
| 1424 | + link2masterCB = AddCheckBox(setupPanel2, GetSupportText(), copy.link2master); |
---|
| 1425 | + link2masterCB.setToolTipText("Link to support"); |
---|
1384 | 1426 | |
---|
1385 | 1427 | if (Globals.ADVANCED) |
---|
1386 | 1428 | { |
---|
.. | .. |
---|
1556 | 1598 | |
---|
1557 | 1599 | return null; |
---|
1558 | 1600 | } |
---|
| 1601 | + |
---|
| 1602 | + int objectTabCount; |
---|
1559 | 1603 | |
---|
1560 | 1604 | void SetupViews() |
---|
1561 | 1605 | { |
---|
.. | .. |
---|
1691 | 1735 | //XYZPanel.setName("XYZ"); |
---|
1692 | 1736 | |
---|
1693 | 1737 | 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 | + |
---|
1694 | 1744 | transformPanel.add(XYZPanel); |
---|
1695 | 1745 | |
---|
1696 | 1746 | /* |
---|
.. | .. |
---|
1728 | 1778 | |
---|
1729 | 1779 | //JScrollPane tmp = new JScrollPane(ctrlPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); |
---|
1730 | 1780 | //tmp.setName("Edit"); |
---|
1731 | | - objectPanel.add(skyboxPanel); |
---|
1732 | | - objectPanel.setIconAt(0, GetIcon("icons/skybox.jpg")); |
---|
1733 | | - objectPanel.setToolTipTextAt(0, "Backgrounds"); |
---|
1734 | 1781 | |
---|
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"); |
---|
1738 | 1791 | |
---|
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"); |
---|
1742 | 1795 | |
---|
| 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 | + |
---|
1743 | 1802 | // JPanel north = new JPanel(new BorderLayout()); |
---|
1744 | 1803 | // north.setName("Edit"); |
---|
1745 | 1804 | // north.add(ctrlPanel, BorderLayout.NORTH); |
---|
1746 | 1805 | // 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"); |
---|
1750 | 1809 | |
---|
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"); |
---|
1754 | 1813 | |
---|
1755 | 1814 | patchMaterial = true; |
---|
1756 | 1815 | cameraView.patchMaterial = this; |
---|
1757 | | - objectPanel.setSelectedIndex(2); |
---|
| 1816 | + objectTabbedPane.setSelectedIndex(2); |
---|
1758 | 1817 | |
---|
1759 | 1818 | /* |
---|
1760 | 1819 | aConstraints.gridx = 0; |
---|
.. | .. |
---|
1775 | 1834 | scrollpane.addMouseWheelListener(this); // Default not fast enough |
---|
1776 | 1835 | |
---|
1777 | 1836 | /*JTabbedPane*/ scenePanel = new cGridBag(); |
---|
1778 | | - scenePanel.preferredWidth = 5; |
---|
| 1837 | + scenePanel.preferredWidth = 6; |
---|
1779 | 1838 | |
---|
1780 | | - JTabbedPane tabbedPane = new JTabbedPane(); |
---|
1781 | | - tabbedPane.add(scrollpane); |
---|
| 1839 | + JTabbedPane sceneTabbedPane = new JTabbedPane(); |
---|
| 1840 | + sceneTabbedPane.add(scrollpane); |
---|
1782 | 1841 | |
---|
1783 | 1842 | optionsPanel = new cGridBag().setVertical(false); |
---|
1784 | 1843 | |
---|
.. | .. |
---|
1786 | 1845 | |
---|
1787 | 1846 | AddOptions(optionsPanel); //, aConstraints); |
---|
1788 | 1847 | |
---|
1789 | | - tabbedPane.add(FSPane = new cFileSystemPane(this)); |
---|
| 1848 | + sceneTabbedPane.add(FSPane = new cFileSystemPane(this)); |
---|
1790 | 1849 | |
---|
1791 | | - tabbedPane.add(optionsPanel); |
---|
| 1850 | + fullscenePanel = new cGridBag(); |
---|
| 1851 | + fullscenePanel.setName("Download"); |
---|
| 1852 | + sceneTabbedPane.add(fullscenePanel); |
---|
1792 | 1853 | |
---|
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); |
---|
1794 | 2049 | |
---|
1795 | 2050 | cGridBag creditsPanel = new cGridBag().setVertical(true); |
---|
1796 | 2051 | creditsPanel.setName("Credits"); |
---|
.. | .. |
---|
1879 | 2134 | creditsPanel.add(new cGridBag()); |
---|
1880 | 2135 | } |
---|
1881 | 2136 | |
---|
1882 | | - tabbedPane.add(creditsPanel); |
---|
1883 | | - tabbedPane.setToolTipTextAt(3, "Credits"); |
---|
| 2137 | + sceneTabbedPane.add(creditsPanel); |
---|
| 2138 | + sceneTabbedPane.setToolTipTextAt(3, "Credits"); |
---|
1884 | 2139 | |
---|
1885 | 2140 | if (Globals.SHOWINFO) |
---|
1886 | 2141 | { |
---|
1887 | | - objectPanel.add(infoPanel); |
---|
1888 | | - objectPanel.setIconAt(5, GetIcon("icons/info.png")); |
---|
1889 | | - objectPanel.setToolTipTextAt(4, "Information"); |
---|
| 2142 | + objectTabbedPane.add(infoPanel); |
---|
| 2143 | + objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/info.png")); |
---|
| 2144 | + objectTabbedPane.setToolTipTextAt(objectTabCount++, "Information"); |
---|
1890 | 2145 | } |
---|
1891 | 2146 | |
---|
1892 | 2147 | /* |
---|
.. | .. |
---|
1967 | 2222 | { |
---|
1968 | 2223 | if ((Integer)pce.getOldValue() == 1) |
---|
1969 | 2224 | { |
---|
1970 | | - if (radio.layout != expandedLayout) |
---|
| 2225 | + if (CameraPane.FULLSCREEN) |
---|
1971 | 2226 | { |
---|
1972 | | - radio.layout = expandedLayout; |
---|
1973 | | - radio.layout.doClick(); |
---|
| 2227 | + ToggleFullScreen(); |
---|
1974 | 2228 | } |
---|
| 2229 | + |
---|
| 2230 | +// if (radio.layout != expandedLayout) |
---|
| 2231 | +// { |
---|
| 2232 | +// radio.layout = expandedLayout; |
---|
| 2233 | +// radio.layout.doClick(); |
---|
| 2234 | +// } |
---|
1975 | 2235 | } |
---|
1976 | 2236 | } |
---|
1977 | 2237 | }); |
---|
.. | .. |
---|
1995 | 2255 | |
---|
1996 | 2256 | // aConstraints = gbc; // (GridBagConstraints) GrafreeD.clone(gbc); |
---|
1997 | 2257 | |
---|
1998 | | - frame.setSize(1280, 860); |
---|
| 2258 | + frame.setSize(1280, 900); |
---|
1999 | 2259 | |
---|
2000 | 2260 | cameraView.requestFocusInWindow(); |
---|
2001 | 2261 | |
---|
.. | .. |
---|
4072 | 4332 | copy.Touch(); // display list issue |
---|
4073 | 4333 | objEditor.refreshContents(true); // To show item colors |
---|
4074 | 4334 | return; |
---|
| 4335 | + } else if (event.getSource() == sortCB) |
---|
| 4336 | + { |
---|
| 4337 | + copy.sort ^= true; |
---|
| 4338 | + objEditor.refreshContents(); |
---|
| 4339 | + return; |
---|
4075 | 4340 | } else if (event.getSource() == link2masterCB) |
---|
4076 | 4341 | { |
---|
4077 | 4342 | copy.link2master ^= true; |
---|
.. | .. |
---|
4081 | 4346 | if (event.getSource() == randomCB) |
---|
4082 | 4347 | { |
---|
4083 | 4348 | 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 | + |
---|
4084 | 4363 | objEditor.refreshContents(); |
---|
4085 | 4364 | return; |
---|
4086 | 4365 | } |
---|
.. | .. |
---|
4316 | 4595 | |
---|
4317 | 4596 | void New() |
---|
4318 | 4597 | { |
---|
| 4598 | + copy.skyboxname = "cubemaps/penguins-skyboxes/yonder"; |
---|
| 4599 | + copy.skyboxext = "jpg"; |
---|
| 4600 | + |
---|
| 4601 | + copy.versionlist = null; |
---|
| 4602 | + copy.versionindex = -1; |
---|
| 4603 | + |
---|
4319 | 4604 | while (copy.Size() > 0) |
---|
4320 | 4605 | { |
---|
4321 | 4606 | copy.remove(0); |
---|
.. | .. |
---|
4326 | 4611 | if (copy == Grafreed.grafreed.universe) |
---|
4327 | 4612 | { |
---|
4328 | 4613 | CreateCameras(); |
---|
4329 | | - cameraView.SetCamera(GetCamera(copy, 0)); |
---|
| 4614 | + cameraView.SetCamera(GetCamera(copy, 0), true); |
---|
| 4615 | + cameraView.SetLight(GetCamera(copy, 4)); |
---|
4330 | 4616 | } |
---|
| 4617 | + |
---|
4331 | 4618 | ResetModel(); |
---|
| 4619 | + |
---|
| 4620 | + DuplicateVersion(); |
---|
| 4621 | + |
---|
| 4622 | + this.SetVersionStates(); |
---|
4332 | 4623 | objEditor.refreshContents(); |
---|
4333 | 4624 | } |
---|
4334 | 4625 | |
---|
.. | .. |
---|
4470 | 4761 | |
---|
4471 | 4762 | SetVersionStates(); |
---|
4472 | 4763 | |
---|
4473 | | - SetCameras(); |
---|
| 4764 | + SetCameras(false); |
---|
4474 | 4765 | } |
---|
4475 | 4766 | |
---|
4476 | | - public boolean Save(boolean user) |
---|
| 4767 | + public boolean DuplicateVersion() // boolean user) |
---|
4477 | 4768 | { |
---|
4478 | 4769 | System.err.println("Save"); |
---|
4479 | | - Replace(); |
---|
| 4770 | + //Replace(); |
---|
4480 | 4771 | |
---|
4481 | 4772 | if (copy.versionlist == null) |
---|
4482 | 4773 | { |
---|
.. | .. |
---|
4585 | 4876 | { |
---|
4586 | 4877 | Object3D obj = (Object3D)Grafreed.clone(changed.versionlist[copy.versionindex]); |
---|
4587 | 4878 | |
---|
| 4879 | + assert(!obj.HasBigData()); |
---|
| 4880 | + |
---|
4588 | 4881 | boolean temp = CameraPane.SWITCH; |
---|
4589 | 4882 | CameraPane.SWITCH = false; |
---|
4590 | 4883 | |
---|
4591 | 4884 | changed.ExtractBigData(Grafreed.grafreed.universe.versiontable); |
---|
4592 | 4885 | |
---|
4593 | 4886 | changed.clear(); |
---|
4594 | | - |
---|
4595 | | - changed.skyboxname = obj.skyboxname; |
---|
4596 | | - changed.skyboxext = obj.skyboxext; |
---|
| 4887 | + |
---|
| 4888 | + obj.deepCopyNode(changed); |
---|
4597 | 4889 | |
---|
4598 | 4890 | for (int i=0; i<obj.Size(); i++) |
---|
4599 | 4891 | { |
---|
.. | .. |
---|
4668 | 4960 | replaceButton.setEnabled(copy.versionindex != -1); |
---|
4669 | 4961 | |
---|
4670 | 4962 | previousVersionButton.setEnabled(copy.versionindex > 0); |
---|
4671 | | - nextVersionButton.setEnabled(copy.versionlist[copy.versionindex + 1] != null); |
---|
| 4963 | + nextVersionButton.setEnabled(copy.versionlist != null && copy.versionlist[copy.versionindex + 1] != null); |
---|
4672 | 4964 | |
---|
4673 | 4965 | deleteVersionButton.setEnabled(copy.versionindex != -1); |
---|
4674 | 4966 | //copy.versionlist[copy.versionindex + 1] != null); |
---|
.. | .. |
---|
4718 | 5010 | |
---|
4719 | 5011 | SetVersionStates(); |
---|
4720 | 5012 | |
---|
4721 | | - SetCameras(); |
---|
| 5013 | + SetCameras(false); |
---|
4722 | 5014 | |
---|
4723 | 5015 | return true; |
---|
4724 | 5016 | } |
---|
.. | .. |
---|
4740 | 5032 | |
---|
4741 | 5033 | SetVersionStates(); |
---|
4742 | 5034 | |
---|
4743 | | - SetCameras(); |
---|
| 5035 | + SetCameras(false); |
---|
4744 | 5036 | |
---|
4745 | 5037 | return true; |
---|
4746 | 5038 | } |
---|
.. | .. |
---|
4751 | 5043 | |
---|
4752 | 5044 | //cRadio tab = GetCurrentTab(); |
---|
4753 | 5045 | |
---|
4754 | | - if (copy.versionindex == -1 || copy.versionlist[copy.versionindex] == null) |
---|
| 5046 | + // < 0 means == -2 || == -1 |
---|
| 5047 | + if (copy.versionindex < 0 || copy.versionlist[copy.versionindex] == null) |
---|
4755 | 5048 | { |
---|
4756 | 5049 | // No version yet. OK. java.awt.Toolkit.getDefaultToolkit().beep(); |
---|
4757 | 5050 | return false; |
---|
.. | .. |
---|
4784 | 5077 | |
---|
4785 | 5078 | SetVersionStates(); |
---|
4786 | 5079 | |
---|
4787 | | - SetCameras(); |
---|
| 5080 | + SetCameras(false); |
---|
4788 | 5081 | } |
---|
4789 | 5082 | |
---|
4790 | | - void SetCameras() |
---|
| 5083 | + void SetCameras(boolean set) |
---|
4791 | 5084 | { |
---|
4792 | | - Camera neweye = (Camera)copy.GetObject(cameraView.cameras[0].GetUUID()); |
---|
4793 | | - Camera newlight = (Camera)copy.GetObject(cameraView.LightCamera().GetUUID()); |
---|
4794 | | - |
---|
4795 | | - cameraView.SetCamera(neweye); |
---|
4796 | | - cameraView.SetLight(newlight); |
---|
| 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 | + } |
---|
4797 | 5093 | } |
---|
4798 | | - |
---|
| 5094 | + |
---|
| 5095 | + void ImportGFD(String url) |
---|
| 5096 | + { |
---|
| 5097 | + objEditor.ReadGFD(url, objEditor); |
---|
| 5098 | + } |
---|
| 5099 | + |
---|
4799 | 5100 | void ImportGFD() |
---|
4800 | 5101 | { |
---|
4801 | 5102 | FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); |
---|
4802 | | - browser.show(); |
---|
| 5103 | + browser.setVisible(true); |
---|
4803 | 5104 | String filename = browser.getFile(); |
---|
4804 | 5105 | if (filename != null && filename.length() > 0) |
---|
4805 | 5106 | { |
---|
4806 | 5107 | String fullname = browser.getDirectory() + filename; |
---|
4807 | 5108 | |
---|
4808 | 5109 | //Object3D readobj = |
---|
4809 | | - objEditor.ReadGFD(fullname, objEditor); |
---|
| 5110 | + // objEditor.ReadGFD(fullname, objEditor); |
---|
4810 | 5111 | //makeSomething(readobj); |
---|
| 5112 | + ImportGFD(fullname); |
---|
4811 | 5113 | } |
---|
4812 | 5114 | } |
---|
4813 | 5115 | |
---|
.. | .. |
---|
5124 | 5426 | cNumberSlider versionSlider; |
---|
5125 | 5427 | cNumberSlider versionField; |
---|
5126 | 5428 | |
---|
| 5429 | + cNumberSlider scaleSlider; |
---|
| 5430 | + |
---|
| 5431 | + void ScaleSelection(int scale) |
---|
| 5432 | + { |
---|
| 5433 | + } |
---|
| 5434 | + |
---|
5127 | 5435 | public void stateChanged(ChangeEvent e) |
---|
5128 | 5436 | { |
---|
5129 | 5437 | // assert(false); |
---|
| 5438 | + // Main version slider |
---|
5130 | 5439 | if (e.getSource() == versionSlider) |
---|
5131 | 5440 | { |
---|
5132 | 5441 | if (muteSlider) |
---|
.. | .. |
---|
5141 | 5450 | copy.versionindex = version; |
---|
5142 | 5451 | CopyChanged(copy); |
---|
5143 | 5452 | SetVersionStates(); |
---|
5144 | | - SetCameras(); |
---|
| 5453 | + SetCameras(false); |
---|
5145 | 5454 | } |
---|
5146 | 5455 | |
---|
5147 | 5456 | return; |
---|
5148 | 5457 | } |
---|
5149 | 5458 | |
---|
| 5459 | + // Version slider of edited object |
---|
5150 | 5460 | if (e.getSource() == versionField) |
---|
5151 | 5461 | { |
---|
5152 | 5462 | int version = versionField.getInteger(); |
---|
.. | .. |
---|
5160 | 5470 | return; |
---|
5161 | 5471 | } |
---|
5162 | 5472 | |
---|
| 5473 | + if (e.getSource() == scaleSlider) |
---|
| 5474 | + { |
---|
| 5475 | + int scale = scaleSlider.getInteger(); |
---|
| 5476 | + |
---|
| 5477 | + ScaleSelection(scale); |
---|
| 5478 | + return; |
---|
| 5479 | + } |
---|
| 5480 | + |
---|
5163 | 5481 | if (freezematerial) |
---|
5164 | 5482 | { |
---|
5165 | 5483 | return; |
---|
.. | .. |
---|
5397 | 5715 | interest.y = k * interest.y + (1 - k) * height; |
---|
5398 | 5716 | } |
---|
5399 | 5717 | |
---|
5400 | | - CameraPane.zoomonce = true; |
---|
| 5718 | + // CameraPane.zoomonce = true; |
---|
5401 | 5719 | |
---|
5402 | 5720 | // june 2014 |
---|
5403 | 5721 | Camera parentcam = cameraView.manipCamera; |
---|
.. | .. |
---|
5471 | 5789 | |
---|
5472 | 5790 | objEditor.ScreenFit(obj, false); |
---|
5473 | 5791 | |
---|
5474 | | - cameraView.pingthread.StepToTarget(true); // aout 2013 |
---|
| 5792 | + cameraView.pingthread.StepToTarget(); //true); // aout 2013 |
---|
5475 | 5793 | refreshContents(); |
---|
5476 | 5794 | } |
---|
5477 | 5795 | |
---|
.. | .. |
---|
5748 | 6066 | { |
---|
5749 | 6067 | Object3D readobj = null; |
---|
5750 | 6068 | |
---|
| 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 | + |
---|
5751 | 6085 | try |
---|
5752 | 6086 | { |
---|
5753 | 6087 | // Try compressed version first. |
---|
5754 | | - java.io.FileInputStream istream = new java.io.FileInputStream(fullname); |
---|
| 6088 | + java.io.InputStream istream //= new java.io.FileInputStream(fullname); |
---|
| 6089 | + = url.openStream(); |
---|
5755 | 6090 | java.util.zip.GZIPInputStream zstream = new java.util.zip.GZIPInputStream(istream); |
---|
5756 | 6091 | java.io.ObjectInputStream p = new java.io.ObjectInputStream(zstream); |
---|
5757 | 6092 | |
---|
.. | .. |
---|
5766 | 6101 | |
---|
5767 | 6102 | try |
---|
5768 | 6103 | { |
---|
5769 | | - java.io.FileInputStream istream = new java.io.FileInputStream(fullname); |
---|
| 6104 | + java.io.InputStream istream //= new java.io.FileInputStream(fullname); |
---|
| 6105 | + = url.openStream(); |
---|
5770 | 6106 | java.io.ObjectInputStream p = new java.io.ObjectInputStream(istream); |
---|
5771 | 6107 | |
---|
5772 | 6108 | readobj = (Object3D) p.readObject(); |
---|
.. | .. |
---|
5864 | 6200 | // // oct 2012 if(cam.parent == null) |
---|
5865 | 6201 | // cam.parent = copy.get(0); // cams; |
---|
5866 | 6202 | // } |
---|
5867 | | - cameraView.SetCamera((Camera) cams.get(0)); |
---|
5868 | | - // MAJOR CRASH!! |
---|
5869 | | - cameraView.SetLight((Camera) cams.get(4)); |
---|
5870 | | - topView.SetCamera((Camera) cams.get(1)); |
---|
5871 | | - frontView.SetCamera((Camera) cams.get(2)); |
---|
5872 | | - 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); |
---|
5873 | 6208 | |
---|
5874 | 6209 | // copy.get(0).clear(); |
---|
5875 | 6210 | // copy.get(0).addAll(cams); |
---|
.. | .. |
---|
5911 | 6246 | |
---|
5912 | 6247 | //? SetUndoStates(); |
---|
5913 | 6248 | |
---|
| 6249 | + cameraView.RevertCamera(); |
---|
| 6250 | + |
---|
5914 | 6251 | ResetModel(); |
---|
5915 | 6252 | copy.HardTouch(); // recompile? |
---|
5916 | 6253 | refreshContents(); |
---|
.. | .. |
---|
5922 | 6259 | if (Grafreed.standAlone) |
---|
5923 | 6260 | { |
---|
5924 | 6261 | FileDialog browser = new FileDialog(frame, "Open", FileDialog.LOAD); |
---|
5925 | | - browser.show(); |
---|
| 6262 | + browser.setVisible(true); |
---|
5926 | 6263 | String filename = browser.getFile(); |
---|
5927 | 6264 | if (filename != null && filename.length() > 0) |
---|
5928 | 6265 | { |
---|
.. | .. |
---|
6245 | 6582 | cGridBag skyboxPanel; |
---|
6246 | 6583 | cGridBag materialPanel; |
---|
6247 | 6584 | cGridBag ctrlPanel; |
---|
| 6585 | + cGridBag figurePanel; |
---|
| 6586 | + cGridBag fullscenePanel; |
---|
6248 | 6587 | |
---|
6249 | 6588 | JScrollPane infoPanel; |
---|
6250 | 6589 | |
---|
6251 | 6590 | cGridBag optionsPanel; |
---|
6252 | 6591 | |
---|
6253 | | - JTabbedPane objectPanel; |
---|
| 6592 | + JTabbedPane objectTabbedPane; |
---|
6254 | 6593 | boolean materialFlushed; |
---|
6255 | 6594 | Object3D latestObject; |
---|
6256 | 6595 | |
---|