From 4d271fbc1aec2663a473bba1eb8717ef564604e7 Mon Sep 17 00:00:00 2001 From: Owner Date: Thu, 6 Jun 2013 12:38:48 -0400 Subject: [PATCH] Removed GmObjectInfoFrame and refactored preferences to allow loading libraries and other things. --- description.jardesc | 5 +- org/lateralgm/file/GmFileReader.java | 6 +- org/lateralgm/main/LGM.java | 65 ++-- org/lateralgm/main/Prefs.java | 27 +- org/lateralgm/main/PrefsStore.java | 54 +++ org/lateralgm/main/preferences.properties | 2 +- org/lateralgm/messages/messages.properties | 5 +- .../resources/library/LibManager.java | 18 +- .../{lib => libs/logic}/04_control.lgl | Bin .../{lib => libs/standard}/01_move.lgl | Bin .../{lib => libs/standard}/02_main1.lgl | Bin .../{lib => libs/standard}/03_main2.lgl | Bin .../library/libs/standard/04_control.lgl | Bin 0 -> 14501 bytes .../{lib => libs/standard}/05_score.lgl | Bin .../{lib => libs/standard}/06_extra.lgl | Bin .../{lib => libs/standard}/07_draw.lgl | Bin .../library/{lib => libs/standard}/README | 4 +- .../library/{lib => libs/standard}/arrows.png | Bin .../library/{lib => libs/standard}/arrows.svg | 0 .../subframes/GmObjectInfoFrame.java | 351 ------------------ org/lateralgm/subframes/PreferencesFrame.java | 225 ++++++----- org/lateralgm/subframes/ResourceFrame.java | 2 +- 22 files changed, 263 insertions(+), 501 deletions(-) rename org/lateralgm/resources/library/{lib => libs/logic}/04_control.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/01_move.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/02_main1.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/03_main2.lgl (100%) create mode 100644 org/lateralgm/resources/library/libs/standard/04_control.lgl rename org/lateralgm/resources/library/{lib => libs/standard}/05_score.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/06_extra.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/07_draw.lgl (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/README (65%) rename org/lateralgm/resources/library/{lib => libs/standard}/arrows.png (100%) rename org/lateralgm/resources/library/{lib => libs/standard}/arrows.svg (100%) delete mode 100644 org/lateralgm/subframes/GmObjectInfoFrame.java diff --git a/description.jardesc b/description.jardesc index f28cc1c6c..d984577a3 100644 --- a/description.jardesc +++ b/description.jardesc @@ -11,6 +11,7 @@ + @@ -19,7 +20,7 @@ - + @@ -36,10 +37,10 @@ - + diff --git a/org/lateralgm/file/GmFileReader.java b/org/lateralgm/file/GmFileReader.java index 20ce0c0b8..6700b631e 100644 --- a/org/lateralgm/file/GmFileReader.java +++ b/org/lateralgm/file/GmFileReader.java @@ -738,7 +738,7 @@ private static void readScripts(GmFileContext c) throws IOException,GmFormatExce GmStreamDecoder in = c.in; int ver = in.read4(); - if (ver != 400 && ver != 800) throw versionError(f,"BEFORE","SCR",ver); //$NON-NLS-1$ //$NON-NLS-2$ + if (ver != 400 && ver != 800 && ver != 810 && ver != 820) throw versionError(f,"BEFORE","SCR",ver); //$NON-NLS-1$ //$NON-NLS-2$ int noScripts = in.read4(); for (int i = 0; i < noScripts; i++) @@ -752,9 +752,9 @@ private static void readScripts(GmFileContext c) throws IOException,GmFormatExce } Script scr = f.resMap.getList(Script.class).add(); scr.setName(in.readStr()); - if (ver == 800) in.skip(8); //last changed + if (ver >= 800) in.skip(8); //last changed ver = in.read4(); - if (ver != 400 && ver != 800) throw versionError(f,"IN","SCR",i,ver); //$NON-NLS-1$ //$NON-NLS-2$ + if (ver != 400 && ver != 800 && ver != 810 && ver != 820) throw versionError(f,"IN","SCR",i,ver); //$NON-NLS-1$ //$NON-NLS-2$ String code = in.readStr(); scr.put(PScript.CODE,code); diff --git a/org/lateralgm/main/LGM.java b/org/lateralgm/main/LGM.java index 4980d22aa..831cfb1b1 100644 --- a/org/lateralgm/main/LGM.java +++ b/org/lateralgm/main/LGM.java @@ -24,8 +24,8 @@ package org.lateralgm.main; import java.awt.BorderLayout; + import java.awt.Color; -import java.awt.Dialog.ModalExclusionType; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; @@ -70,6 +70,7 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.plaf.metal.DefaultMetalTheme; import javax.swing.plaf.metal.MetalLookAndFeel; import javax.swing.tree.DefaultTreeModel; @@ -99,6 +100,7 @@ import org.lateralgm.subframes.ResourceFrame; import org.lateralgm.subframes.ResourceFrame.ResourceFrameFactory; + public final class LGM { public static String iconspath = "org/lateralgm/icons/"; @@ -142,7 +144,7 @@ public final class LGM public static void SetLookAndFeel(String LOOKANDFEEL) { - // MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme()); + if (LOOKANDFEEL.equals(themename)) { themechanged = false; @@ -173,7 +175,7 @@ else if (LOOKANDFEEL.equals("Windows")) { lookAndFeel = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; } - else if (LOOKANDFEEL.equals("Motif")) + else if (LOOKANDFEEL.equals("CDE/Motif")) { lookAndFeel = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; } @@ -182,7 +184,7 @@ else if (LOOKANDFEEL.equals("Metal")) lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFeel"; MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme()); } - else if (LOOKANDFEEL.equals("GTK")) + else if (LOOKANDFEEL.equals("GTK+")) { lookAndFeel = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"; } @@ -192,8 +194,20 @@ else if (LOOKANDFEEL.equals("Custom")) } else { - System.err.println("Unexpected value of LOOKANDFEEL specified: " + LOOKANDFEEL); - lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName(); + // Perhaps we did not get the name right, see if the theme is installed + // and attempt to use it. + boolean foundMatch = false; + LookAndFeelInfo lnfs[] = UIManager.getInstalledLookAndFeels(); + for (int i = 0; i < lnfs.length; i++) { + if (LOOKANDFEEL.equals(lnfs[i].getName())) { + lookAndFeel = lnfs[i].getClassName(); + foundMatch = true; + } + } + if (!foundMatch) { + System.err.println("Unexpected value of LOOKANDFEEL specified: " + LOOKANDFEEL); + lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName(); + } } try @@ -227,17 +241,19 @@ else if (LOOKANDFEEL.equals("Custom")) // this function is for updating the look and feel after its // already been initialized and all controls created public static void UpdateLookAndFeel() - { + { if (!themechanged) { return; } - JFrame.setDefaultLookAndFeelDecorated(true); - SwingUtilities.updateComponentTreeUI(frame); - //SwingUtilities.updateComponentTreeUI(mdi); - //frame.pack(); + SwingUtilities.updateComponentTreeUI(tree); + SwingUtilities.updateComponentTreeUI(mdi); + frame.pack(); Window windows[] = frame.getWindows(); - } + for(Window i : windows) { + SwingUtilities.updateComponentTreeUI(i); + } + } public static GameInformationFrame getGameInfo() { @@ -500,7 +516,7 @@ public static void reload(boolean newRoot) LGM.getGameInfo().resOriginal = LGM.currentFile.gameInfo; LGM.getGameInfo().revertResource(); LGM.getGameInfo().setVisible(false); - + LGM.fireReloadPerformed(newRoot); } @@ -603,6 +619,11 @@ public static void main(String[] args) if (javaVersion < 10600) System.out.println("Some program functionality will be limited due to your outdated Java version"); //$NON-NLS-1$ + iconspack = Prefs.iconPack; + SetLookAndFeel(Prefs.swingTheme); + JFrame.setDefaultLookAndFeelDecorated(true); + themechanged = false; + SplashProgress splashProgress = new SplashProgress(); splashProgress.start(); @@ -619,16 +640,9 @@ public static void main(String[] args) } } - splashProgress.progress(10,Messages.getString("LGM.SPLASH_THEME")); - - iconspack = Prefs.iconPack; - SetLookAndFeel(Prefs.swingTheme); + splashProgress.progress(10,Messages.getString("LGM.SPLASH_LANG")); Messages.updateLangPack(); - //annoyingly, Metal bolds almost all components by default. This unbolds them. - UIManager.put("swing.boldMetal",Boolean.FALSE); //$NON-NLS-1$ - themechanged = false; - splashProgress.progress(20,Messages.getString("LGM.SPLASH_LIBS")); //$NON-NLS-1$ LibManager.autoLoad(); @@ -658,12 +672,6 @@ public static void main(String[] args) extSet = new ExtensionsFrame(new Extensions()); mdi.add(extSet); - // This code causes a hanging loop and you have to force shutdown - // I advise you not to mess with it - //gameInformationFrameBuilder.start(); //must occur after createMDI - //gameSettingFrameBuilder.start(); //must occur after createMDI - //extensionsFrameBuilder.start(); //must occur after createMDI - splashProgress.progress(50,Messages.getString("LGM.SPLASH_MENU")); //$NON-NLS-1$ frame = new JFrame(Messages.format("LGM.TITLE", //$NON-NLS-1$ Messages.getString("LGM.NEWGAME"))); //$NON-NLS-1$ @@ -680,9 +688,6 @@ public void windowClosing(WindowEvent winEvt) } }); - //p.add(tree, BorderLayout.WEST); - //.add(new JButton("fuck you")); - //content.add(BorderLayout.WEST, p); JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,tree,content); split.setDividerLocation(250); split.setOneTouchExpandable(true); diff --git a/org/lateralgm/main/Prefs.java b/org/lateralgm/main/Prefs.java index 11c0279b6..c6a7896fe 100644 --- a/org/lateralgm/main/Prefs.java +++ b/org/lateralgm/main/Prefs.java @@ -112,8 +112,9 @@ public static void loadPrefs() enableDragAndDrop = getBoolean("enableDragAndDrop", true); forceMaximized = getBoolean("forceMaximized", false); dockEventPanel = getBoolean("dockEventPanel", false); - defaultLibraryPath = getString("defaultLibraryPath","org/lateralgm/resources/library/lib/"); + actionLibrary = getString("actionLibrary","Default"); userLibraryPath = getString("userLibraryPath","./lib"); + eventKeyInputAddKey = KeyEvent.VK_BACK_SLASH; actionToolTipColumns = getInt("actionToolTipColumns",30); actionToolTipLines = getInt("actionToolTipLines",10); @@ -157,7 +158,7 @@ public static void loadPrefs() public static boolean dockEventPanel; public static boolean enableDragAndDrop; - public static String defaultLibraryPath; + public static String actionLibrary; public static String userLibraryPath; public static int actionToolTipColumns; public static int actionToolTipLines; @@ -173,5 +174,27 @@ public static void loadPrefs() public static String externalScriptExtension; public static boolean useExternalSoundEditor; public static String externalSoundEditorCommand; + + public static String getActionLibraryPath() + { + String ret; + if (actionLibrary.contains("Custom")) { + ret = userLibraryPath; + } else { + ret = "org/lateralgm/resources/library/libs/"; + } + return ret; + } + + public static String getActionLibraryFullPath() + { + String ret; + if (actionLibrary.contains("Custom")) { + ret = userLibraryPath; + } else { + ret = "org/lateralgm/resources/library/libs/" + actionLibrary.toLowerCase(); + } + return ret; + } } diff --git a/org/lateralgm/main/PrefsStore.java b/org/lateralgm/main/PrefsStore.java index f68d8dc8f..c95d4b0aa 100644 --- a/org/lateralgm/main/PrefsStore.java +++ b/org/lateralgm/main/PrefsStore.java @@ -71,6 +71,60 @@ public static void setIconPack(String s) Prefs.iconPack = s; } + public static void setActionLibrary(String s) + { + PREFS.put("actionLibrary",s); + Prefs.actionLibrary = s; + } + + public static void setUserLibraryPath(String s) + { + PREFS.put("userLibraryPath",s); + Prefs.userLibraryPath = s; + } + + public static void setSpriteExt(String s) + { + PREFS.put("externalSpriteExtension",s); + Prefs.externalSpriteExtension = s; + } + + public static void setBackgroundExt(String s) + { + PREFS.put("externalBackgroundExtension",s); + Prefs.externalBackgroundExtension = s; + } + + public static void setScriptExt(String s) + { + PREFS.put("externalScriptExtension",s); + Prefs.externalScriptExtension = s; + } + + public static void setBackgroundEditorCommand(String s) + { + PREFS.put("externalBackgroundEditorCommand",s); + Prefs.externalBackgroundEditorCommand = s; + } + + public static void setSpriteEditorCommand(String s) + { + PREFS.put("externalSpriteEditorCommand",s); + Prefs.externalSpriteEditorCommand = s; + } + + public static void setScriptEditorCommand(String s) + { + PREFS.put("externalScriptEditorCommand",s); + Prefs.externalScriptEditorCommand = s; + } + + public static void setSoundEditorCommand(String s) + { + PREFS.put("externalSoundEditorCommand",s); + Prefs.externalSoundEditorCommand = s; + } + public static void setIconPath(String s) { PREFS.put("iconPath",s); diff --git a/org/lateralgm/main/preferences.properties b/org/lateralgm/main/preferences.properties index 2da499e33..9160b66c4 100644 --- a/org/lateralgm/main/preferences.properties +++ b/org/lateralgm/main/preferences.properties @@ -42,7 +42,7 @@ iconPath = icons/ #Library settings enableDragAndDrop = true -defaultLibraryPath = org/lateralgm/resources/library/lib/ +actionLibrary = Standard userLibraryPath = ./lib #D&D Actions in objects show a tooltip of their settings. Set these to 0 to disable. actionToolTipColumns = 30 diff --git a/org/lateralgm/messages/messages.properties b/org/lateralgm/messages/messages.properties index cddb8cc0c..376133771 100644 --- a/org/lateralgm/messages/messages.properties +++ b/org/lateralgm/messages/messages.properties @@ -264,8 +264,8 @@ LGM.KEEPCHANGES_TITLE=Unsaved Changes LGM.KEEPCHANGES_MESSAGE=You have not saved your recent changes, would you like to do so before closing? LGM.SPLASH_START=Calibrating Sensors -LGM.SPLASH_THEME=Brushing my little ponies -LGM.SPLASH_LIBS=Loading library files +LGM.SPLASH_THEME=Articulating Simlish +LGM.SPLASH_LIBS=Grazing the llama's LGM.SPLASH_TOOLS=Creating Components LGM.SPLASH_THREAD=Launching into Hyperspace LGM.SPLASH_MENU=Initiating Menu @@ -466,6 +466,7 @@ PreferencesFrame.DEFAULT=Default PreferencesFrame.SYSTEM=System PreferencesFrame.CUSTOM=Custom PreferencesFrame.THEME=Theme +PreferencesFrame.ACTIONLIBRARY=Action Library PreferencesFrame.LANGUAGE=Language PreferencesFrame.ICONS=Icons PreferencesFrame.FIND=Find diff --git a/org/lateralgm/resources/library/LibManager.java b/org/lateralgm/resources/library/LibManager.java index c7f40aa12..a7970f81c 100644 --- a/org/lateralgm/resources/library/LibManager.java +++ b/org/lateralgm/resources/library/LibManager.java @@ -62,20 +62,22 @@ public static LibAction getLibAction(int libraryId, int libActionId) */ public static void autoLoad() { - File defdir = new File(Prefs.defaultLibraryPath); - if (!defdir.exists()) + File dir = new File(Prefs.getActionLibraryFullPath()); + if (!dir.exists()) { if (LGM.workDir == null) return; - defdir = new File(LGM.workDir,Prefs.defaultLibraryPath); - if (!defdir.exists()) defdir = LGM.workDir; + dir = new File(LGM.workDir,Prefs.getActionLibraryFullPath()); + if (!dir.exists()) dir = LGM.workDir; } codeAction = null; - autoLoad(defdir); - - if (Prefs.userLibraryPath != null && Prefs.userLibraryPath.length() != 0) - autoLoad(new File(Prefs.userLibraryPath)); + if (!Prefs.actionLibrary.contains("Custom")) + autoLoad(dir); + + File userLibF = new File(Prefs.userLibraryPath); + if (userLibF.exists()) + autoLoad(userLibF); if (codeAction == null) codeAction = makeCodeAction(); } diff --git a/org/lateralgm/resources/library/lib/04_control.lgl b/org/lateralgm/resources/library/libs/logic/04_control.lgl similarity index 100% rename from org/lateralgm/resources/library/lib/04_control.lgl rename to org/lateralgm/resources/library/libs/logic/04_control.lgl diff --git a/org/lateralgm/resources/library/lib/01_move.lgl b/org/lateralgm/resources/library/libs/standard/01_move.lgl similarity index 100% rename from org/lateralgm/resources/library/lib/01_move.lgl rename to org/lateralgm/resources/library/libs/standard/01_move.lgl diff --git a/org/lateralgm/resources/library/lib/02_main1.lgl b/org/lateralgm/resources/library/libs/standard/02_main1.lgl similarity index 100% rename from org/lateralgm/resources/library/lib/02_main1.lgl rename to org/lateralgm/resources/library/libs/standard/02_main1.lgl diff --git a/org/lateralgm/resources/library/lib/03_main2.lgl b/org/lateralgm/resources/library/libs/standard/03_main2.lgl similarity index 100% rename from org/lateralgm/resources/library/lib/03_main2.lgl rename to org/lateralgm/resources/library/libs/standard/03_main2.lgl diff --git a/org/lateralgm/resources/library/libs/standard/04_control.lgl b/org/lateralgm/resources/library/libs/standard/04_control.lgl new file mode 100644 index 0000000000000000000000000000000000000000..1f05514cf87758040204732dfecfeb65e093cee0 GIT binary patch literal 14501 zcmbWd1zc2Lw=fKdNOwpN-Q7q@h=9^1J-`ss44r~VN_UrvfTVyRrL=@}caD^F56nA* z`rNPT4$emqWB~a2^k6Lo`sX6o2!#Ol0FI&Qp|(5FK4q> zWRQM;sPd2?cQ7>EL0~sqCr27V6WA6(1+WDJ zES&7^ZNZ3vl`9DJ|H6yQc)~fzxc-X+s|+uv3?CbUlZ@)$yZ}~Ct^gT+fRp)ikcAtV z8V@cG&;qfpsjZbM2q6yA9TYEdBxGJB6z|(F^xw4NsK~syPLB580I-w2t)(B(-aZd0 z0T~;t^#$t%&~8 z>R%T4Uu)**orjc&i~)C$+O3@!{!+{FxAg#jDfPdhk-Ak0KJ71^_&8+K*9DH-`5+-vf-79e^(L{PwE z5Kd$P;sn6?z+>M5;0W@9$Kq|sv)_{ZB7pA{KDaRe@U8QoNCp1lhA`ZJpod5PKiL!D z{^c%9xKK#QXkc4Q5E!l-KRgMfB4fd&{gWU5nB5%=R|n___5`_t0p9RHcXNX4;qp6+ zu)xhOql#GS|4zsCf2Bjr|HDxnt~3GRU$Xu|At7V@xfO@!w>+dYWE3T<`*7Cq7zKGb zyTaY@J7>AMx`X~l1l4We|6_s-@2{{x%p%A5=h{ffSpP*Q4#(snrQhbtr%rH%sSry8 z91ynvb9XnlU-|M@4v-}xQOc;oS^xjU6a1YGZ@C~L-}|)=JpTBI9TAad<>u#VYi;A^ z=U{7TX%EUn%0R}1yYZpDt+gY_5&#$C&!)QFQ@_EtIm+7A){_3e5y1EReO$ zkc?68$vHV7B*Is6geP`HA7t?ha98G$k_<1_Z!|(Jgk6x3kkNk=h~FCMU%t6T#@~7i zLl@|33p9sU!CN5wf^d)p3i=;7r4|UWVL*V}g8nP)J$}z2L*Qgw{|s+q(+QqC=w&?r zVBk#vV$Q#jASxP?84AW91VTcz+a-RhYl(uWXu7{wBEQYne~1A#Ktxk`OOB67)xT@N zZENsv0P?>p(jO*Bcm8W}xGeuz{QqmK07Ai$cLjR>OIRwz=zp>q^}i$kNCek|vuk`$Uwd+bS|}wg?QlUQ@SBR->lVhYgfwfxI{lY-Rd((^h`gJ; zaQALJcXRmhyWlD0WOF&gB6JPF@tbs|mal?R4{^~4K zp$^kUIjtTS*}HgOzn7rarF2$SP2JmmrGS#PA;E2tXq#aod^)-pNH`9-)VeJ>AS=}J}_PU++mj16sp%aS>pXFJwO9JP53+p%vV|44q zX@ft$q#EPGC0~odlRhUMWiARI#HQ?#m{1uEFI%<1ZjxiFYSnXRy8Zm+NTB+H zj)s-Zbs>X_(}U?ziEeYU`O4WPNPAlY<|ZpgWBBH1^IcIcYPhUe5C@_bRgbGLMwbrEvkm5Sa<;D}$YvG9!j0lWS2xHMyBecSjZ(h1z`x zFNRL!M5gRxc;8p~>wt!QHSs)PUNZ3W($*+BzIU^ZUwOFgfRyQBP3>gr9-GVot!Fa- za!6tEO*PV@F`nccZu|Vn<7htn9`o1a>qQCOS^W;It)E{UPj9cl8unZSZDkYHXD!h2 zTIK7N>s9NO>Y1cX$u8>ZioT`z$LKWP&^DQ3r`t2k)Xhf$+rJYy68?+;&(?vobpde6 z7w41rcFaYmes+|MfqUjv!P%=K%bV$FSW(V9vz}<4dnkd>15;#GFimO|&TKW_75_aj zU(vfu@HAuN3Gc~lu+}8Ib67`DeEz&1tv$AAaiH6iMJ?RceUyeGP}DtiKPx}M8vO&8u;!%hn}qJUEhu5ifO2R%_^FPr zNiRym7h(I-2sxs_#f311m%WzhKZf$deO~gn!PRJ^ZVOz8YuqXqrdd7zNa~_(a_CYZ zLwH`Mg)hWS;>?Kq#8M%IP?-!vW8|~ql+97KidSDk< zyGN+12W3Mgt}W4io8>>1DwY-{mc6qHbE(;9; zEQabBow=gd;GFaokt4^KVaJKG!+HGE27=FPa7_JN!b1~BLpVYVLuPFzf08a^8q|s_ z2>X6Zx%=taxo*)7ZD36dRCc&P0o%lvE4wnjQX$K*MxUvpQ}}Xg58{t)qJq~p0Ah() z;>1z=a&s-?QdJUHXWsy*w9~tLA{(ZVUg3o7KNu_65JQT{WC14K+FOH*%a*M;a#<5g zLwlYsG4lBst!b7^*Rj{?huaRxP=>&{msJ+xF7_lwMuB~IOX)HNI0zozun?ySF%X*2 zTxlO-E4)xE?zP^~h3JJ%hAZsb%we~3M1&!7=4U^l0}-c|Xl@$`U^4#QLAeZJu6JmX zF?uF!ELnwaV(Zj})z<}0BaYGgWvbVZjNP|1ESP)EWFfKAG0YuAgq;`7XS(6l4OXvw zwrPJT;_SGGhlUx;qWYepC@2ikGcL_KL55-Zt*o<^%j_H9pS~Mklv{?^gU+np6Ud;d zhaqo2KWVA=NI%B|p$@0F7iOahJz@uj$<+fzft|cp#2FS2ghu^hzE&ufqs)qyUL?qk$>g_U0F{Tb|~08x!Kb95uPND&DsXX1>`Nc!te^j&Yb{gN38! zJvK@_GNk#0HQ$YIeK)__Ps7AEmC>)%5GK_;p%F_IDeOSMKOmBik`=I9i?3nz_*xD{ z&8%S&n4z~Lt9@*3R* z=)&SudJ=QN`)yd6Jyx|%-H{|MLd7uIqwMnnkm!QH2qFVp+gvlqs?v)t@t!~*#AkVh zZiwaqG0&Ip+0mtpjkzksYHJ^p?d(o6@KrrYs(R`rT2?)G6ffV>7tRn~-xi_Oa08{j zS-3K@qKM2b@=gpFHs>g-wE6t@OTR+HIYcpl-P=y}I+DPVoR|Nk`?YP*{s}kXoDr<5 zFqn?gYA5PPj}|-n@uDe{8bDS=Hzc*#&&u&BG^3$!>0*!eZo#-$%|oKrgFKWiV||$b z#stqnPcqfMXkj_d2J7Tf zF_b#2NRgX4lT#trh5P##QT7$^ZF%~PX03!*Az=VmmHY?SgQAdxV#+ya}zx0<4Xdh$b< zQx=p~>1bw4NCL-Hj&}>i9^SX440~A9Yc6U@Ot-geT50%^?3%eA81sy`NfP|3f?p3N zr2^QV9=HH%pKCC7C3Bc58ygM&w1~TJSWbq)XN}*uvQ{`)WsOSTuKaZ_W?saKdAR|dkamJ$nd_VY;!U(i8B|*R8DCo6$aZoy)Q9@eSP^vHa2IK&&-kc9U8>!*$u|)nwXb^{9ELOeI;Y9 zih4z1)!f-TAAHZ;%Jd0bh}j~n?lH;cM#!7AO}YaUi$k~MMmZ1QAt+(JV^-x(wL zj%Rx(AC4AFqs11nXUMDF3i>zWr4>U>WgHs=h77%kwmi)L)-!t74biI>YV`b2B$PWI zBO`tfPQDl}+2n?}SWpe+ibiKonu%_{=$kgty6)TqQqOQ#?#@iNn1jYNJ}8Un-OZt) zTv|zzHLWvcYW1C5PLu2-vlYBbJxoJ*{gO|OHqhOSHPGNt?8*Jy=ueBd`N_SQ84U6S z^lRaS-cGI5jP_G?%ur$72dHmq81Ju3u$9Hax@qm5!orA0vzzgxOrBMKjQEt2uQWrsEIsv@gSzPX`(pg(6q?jHX0bahOBi8htd?Xe5IU#6S^8e_vDCw8-Qc)92~NWdr9zqDKW+AOk?{6lmeRpn z?Y)=!**-IQmy_r85z?AmWNmA@gNgxmi9Gq|T zOdTb!#SpU|ysR&y*q25=7&EwT$e%1XjygX-H@FMtKhugTCFB_~BxKn3(n(^zxLc|h^@9b;wsM+WA;IZCfqf^fC_uS<$ zBBHpKdM-Kj#Cmqh(qzVWYvQZc@iwbkJfoealZwX1FeucIk(v3qg4JVm+`;sh99>=Y zi)ER&rg6L2SYQ9T1fQ-kU(bHzU0(U=Te(00X@oHMQ&7e^j+m>f>!p>obuL2|^Ko&E zld%bm%die0Cf0zdnUJ7v0}P_f7GECerd@?f-voUe$XKRYrhi+Ze%pvYUomq`r*ko! zAZ_HcvZVKct*PvP?OCpRbM9YDNG5E3N;qXughhK(#>Cdrq`UfEpK->kCb_snlAQn8 z(h^($lcTYMqa*iyxL4%-YR3b&-aL7dQHeInY+bVUV3zhvNR{o6NfxALA0La3%KH>; zku?*!ERDs*#q5t&lpbz=31W2`MFTOWedH(SCJ11HGD{y>la4*B1{$7fK!A?TF2Jsr zZ9^YyX%9{_`7?yJUw*yQ{+#&JTWp>|t~YBE8N+1DGqtnt-=FgYG zh@~V`flHcOl=gvUO@#+fuxf zzVyw-KP9b2JbfNY$ex~&B}-_?9&1jTlt>vUJOw#WN@ByCU|*6^Gzk#ljGe& zQ8m}+oBH?4*YJ-5HKXO}kDx44uF5cZ4NkIdC)clYZ;rUUFVV7N`}(H2Q~jp&(xVzc zmn(H+%PaLnFhA?p@15I2=Xrgt9@VbYy*cNjjKbboaF6hz!lxOc`f(qlL^eFam$9qN zFnMLgdpKvFta9#5zZS70h1e3$$0_Fq1_pZO=bM8Y_XjdXC{gP`w5K|dQC*m@X=aoi z)Zv~=*~yXfY#82x2!Tg5g?qc~(SXiYtJ|ig{Z!?{pz}fL?v$?Rc*TM#1y*`0fKfbF zSZryM6f4TNRC{ab#AdUpJ(k#+m1sWTi0@`DUA%tg8ptj7uzG-2s>_+RHsK8 z!$KKeIb984eDlv<1oeImgnH%LITa>vkJmBJy{X@O%#lXPTc_t-a){KGm6gR87Fyh` zkV)csLuW?I!cv5}p}sMu3k&d<=ya!%7&5hJ=uV(-I(W1W4V&#SzhRC(@pN(d`tE5a zF?!LuH(CS`D=PSl?94;a3PynHUIGO2ZFeGG?fwNjnD5h97a;H}%Rw8~wfrl?+6;_b zP^VDjY{HiV1>F=5jhZuVWtE3=WX>z7Flwr$F}9`SO+`^KnxLM~V~#rG@t9fjc$?DP za{dU@=RdrUHprjp>(8kwD{F3cmEJk6t*L1mFe0p|yHpd7Aex-%7kp|lFLmWs!V3Gr zK;*?WUsQV|EG)d@9UZcynq8TY0@>umY1U85r2yeNbgheGg1czL+%Y}h zMNP#Bi+C7`8+X=@>Jt+k=NsaQl!zW9Uscq8moX-o1~Trvq#L@ZUp=8>jCSO9PyFIi zb4}iiiyNPL+S(c`z8DD8&%_4B0z!oF_zr$;C&p)DJxR zszH4v60iJ?cp>#Jt93S|u)f2F4e1-8(c73);Y<<-;8=j^AwnId6lAD*@865Rt!pVV`8ZH)A&vp&~bV5(6vp2qS14-!2qf4^tan1O%h7VoC_iDYy zI#2c{$|#>-`P*Q?XLjni)MMVOcKJe;ODpozHsc#}*-1)o&fSBt@sq$6l#lxEJ)cBUD=Bubj_?N=u*F0Vt#{Jtmhs5HEWzH)Fs-~N2#PVwo47_T|ldjvtf zy0X%NrKX{wfsTWtU}l!*buA++BZCzD@}+`azgp-83mW{H&-A)6$=|N53{#$@?~09OvGIJ{{{7 z!VP=%;hI3uVKbV?_llldO2f%0;az=ENC>J+>LEvJPEHOh4~!~M(g+Xgp6aX^6o%&z zmpo3su&@vw9*z%h4WdocJ>P6oV7m>y{s#Tz*CZ$8x>XWryiYmuXx0z((j%mgoxQx* z`6Lbdg04Dpx23uzv`gS*;j{ZT$$IXl9fn@@$B(`o-Ar5t6wy|>JfW}8iquI}NhIVG zD^`YDT6q!@G;3~h7@JcIvby)?_B#_Pf)_JX)b>IfJ&O`-xY?HJX(V{NLvdgP()O+v z`}0|Ei0{1pKG-BNc2L=k;~jg+`*f*#ScQMNUQnH3FL7BWu~n+oE1;pB&*9Y)($kRlUEZKE4)kE z40>8xOGYS#9H?WeKFZeK6mT`qm1TA3GyCy1_~Kz;5FAnA#k$mc?D`WvEyn!0D57As zaaNGJLiciSjri?3i+g}0F^#x{goHeU6}3dgh`^JxLD^SLL7pk5?X1r&Sq1@oWLl5_ zP3YxJZfIFt;Wo%q{o#rR3S|9W5A+z*X1qklP!v_+GU!R9gO5?=<><&r-D4Le;qtMo z8r=89irq&xm#^@owl|{EQwY**NrHw2jyk<9y}d3fLX#@5fH%X_ar+XU4EDLh;*b?bxVb#vYI^E-(wCS6J8yecn zYAX6OsI5)brDO+ZuKq@d{f3vcK5#HNBr)#`ZBlB^LPWb`M^?n1!NyS6;G8`R4xeBm zKe~M%hos}u@v&Prw5-{{;&NrPwyVNoyw)u6!v~bq$DAP{d5S12HA#cQ4L8-#e8Tu+ z3=5R!gc&E4^stG+tlcsPf&C(^cLxmbVLlXu+7J|&>)QDr%(e4Gq?|mAMIEc6+Vead zx8aZ^*6xr1Sz#jY8wIC+W@D3cUWVRdOaVmKyO+|=S4oHG$D}sXyC#a>+VY?yi!%Cb zSXpnIj?uZLW|A~;Bbf#(6K?3EeGYI^euN>BTeYD!2b6;4drS41O@iN*DqF;w5tDGY zG$DS`TfaKGS!vg1kkcj!fqV8NH%}do4JFeZBGa99pe-Zda?q_Ms*9Fqg#4zOUn<*& zBUTZmVEKcB9bR-@e;L)8JQfNa(oZEXq1E;En8a?=H~Dtr7*Z9;g}qA?W5g@aoTR2z}uoX43opd%5xwm72L+;Y8dE zzfSh;y+yB*4pP39%c6o!7Vfy_J=U;9{azInpXqz5k^FTQzHHn|l0PGOs5}?__%0w( zNl7%KhBp}dL)Dn&rrRO4KFyR1`rx?ijn(|Lm1c@YvSNBUlb$dupFBt=?BU@wQMO7taFHV0;Umg2(Fmz)u z*U8e>_8IUoc9O(Iaj?Iji_4C>>x_@!O$c-MVm31}msSK3z1ija?tO$46?+Uhh0c5J0Xr2D zrYq~f&@e1V!IS9enji=7g6}Q;`O&$0W|+v|6vp}s#R`g9O4wR21#%?$=fcf~T*v#jXosH@|TOuBV69L6fiv@UI}Pw11+Bje)Y znjiLakdRWEdYxJXIzZ=G?fU}eY?#KpTnsi?6QLjFy(5}}5GR~+M6G`7CG3EkPgI)I1oP6idMH z=zcWygSz0{u|tWV+s5vW{QGbQ3Mom7XoJv|dgybQb740bq_bC*54TUOu$BgN`YdMlmKI?M2t zGhU}Br>VW%c|*MSLU*aKV-58`?K+tXNgQGS5CoQUOP54XVZ0fu=3kTaQfCP01k*}S zU*BtB45pqTaMZyt7Cy5Lern`da$V|EVbXkgx;?o^wJi7+=Y}C+%SGv#n754+F}=K? zH?V0VjY-V4ZeyF%+R*`C4#1Je+F6YrIeAtNm*}q=Da~~ZOkF-5Nks5?1;x~}fC5~I zdh}Gr}Fxu><6Bh z1PAK67nIYo_KWOtms`l@=PMX2rp|Q&A*SIOp$|;B!D{x_*7pqjBfpg}JCh?0Yv4bS zu~~&c^qgjzB5>uz&Cd6i)5O5wBAMI*oAjJTkRiyDGxnZ!T7hB@oO0?3Z z+A*KwZlI33q{hdb9Gwc2#PRvDrYlLIO2%fCPZ#qeOt<*#5@CTRGVau=mgs@-L+rZ& z&;v!c&5>6l*$M`|6Zs#I;gD`0Xmlf~rEPWRyI>Nh^fn-6MsSvtdCzYZ!c#_~DKdG#%kIxa5m z{qXnkaoR_Zz{@KuMSR>!vjO_LSf^(DFCP2NE+9*vVTBetM0813GOP7>1h$xlC=pHQ zPUCIwFWc;}9S?BoLFX{N(S*(i_vw`q zUt62*ic{crMRl3_WVwL0y}1R^P{}x}LPL7GU2;96!xiuu_f$lx3B~)i#k%O^$ml{Y z7#r+c zF|5an`L@!--fI5!;dM4PhnB%oHxgm7_t$FH>GpCf;v( zQ0^3#bU4_~;PrLp-`{JJBwh4#2#Q$M+@CNkyc@XMC0T6W+O}~W__VEcLEzyecU0%8 zBGv%76mD?!r7-`iCU`YjQgWvZ54i67vbac?8z3&zQlTrtZdg)jJKA;M)L-a65sPZq zB5VPRoIGmG%WwPcn?3bKwUWcsZ7)tk(h_3RBvxVF06qwF`w6opcKXNVeeWi2-1X(v)1XfjGR)3Vl z&s}|EKFC3b`gv(CkVTixuBTodK%Jza`b3W>}Ii9f{Xceg3a z(iG(%F|*l^jPS?jw3t}TrCbK+(*=c9(XWK891YRkoaZN&J)YHf(B9|q7|@zJzanK| zUCQgat|aB62uWnIAYo;X?1*RJAjusVAcJp%$j9B?zU=3dWk*_5J5vOaZEemZG-&X| zB0rc+j&8QWMZka(5 zU%9fs^oQ@#Q!7O@-z(EvNvUVjM-Tlm%?ng@f4Y-^(E_h#0bgMgne9L+Yat&G&#z=$ zMWb&nUckk(ceq*_EB3mp&snHA2ncE{)T=nKS-c@jO6dx(uC5ksy0BWW%ck`+3t2J~ zc})R|+-sp!BHI3^u;V4;_dAVeibn-4t(|n(AT&zsfmgc^c?FIDK-<_-%|*QJM71Zx zH@h?673O*q*?o<1Xt#=31Fui=&7G<{&IJt4+B2kEIaG61HS?ZkE@Q%IB)j6hR The corresponding source for these icons is distributed under the GNU General Public License, version 3 or later, and it is freely available from the -LateralGM repository, currently at: https://opensvn.csie.org/traccgi/LGM/ +LateralGM repository, currently at: https://github.com/IsmAvatar/LateralGM If you can not find the source code at that location, it may have been moved. -In that case, contact Quadduc at quadduc@gmail.com to get the source code. +In that case, contact Quadduc at quadduc@gmail.com or IsmAvatar to get the source code. diff --git a/org/lateralgm/resources/library/lib/arrows.png b/org/lateralgm/resources/library/libs/standard/arrows.png similarity index 100% rename from org/lateralgm/resources/library/lib/arrows.png rename to org/lateralgm/resources/library/libs/standard/arrows.png diff --git a/org/lateralgm/resources/library/lib/arrows.svg b/org/lateralgm/resources/library/libs/standard/arrows.svg similarity index 100% rename from org/lateralgm/resources/library/lib/arrows.svg rename to org/lateralgm/resources/library/libs/standard/arrows.svg diff --git a/org/lateralgm/subframes/GmObjectInfoFrame.java b/org/lateralgm/subframes/GmObjectInfoFrame.java deleted file mode 100644 index 2407d2390..000000000 --- a/org/lateralgm/subframes/GmObjectInfoFrame.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Copyright (C) 2013 Robert B. Colton - * - * This file is part of LateralGM. - * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. - * See LICENSE for details. - */ - -package org.lateralgm.subframes; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.StringReader; -import java.io.StringWriter; -import java.io.Writer; -import java.util.ArrayList; -import java.util.EmptyStackException; -import java.util.Enumeration; -import java.util.List; -import java.util.Stack; - -import javax.swing.GroupLayout; -import javax.swing.JButton; -import javax.swing.JEditorPane; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JSpinner; -import javax.swing.JToolBar; -import javax.swing.KeyStroke; -import javax.swing.text.BadLocationException; -import javax.swing.text.rtf.RTFEditorKit; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.TreeNode; - -import org.lateralgm.components.ActionList; -import org.lateralgm.components.CustomFileChooser; -import org.lateralgm.components.ResourceMenu; -import org.lateralgm.components.impl.CustomFileFilter; -import org.lateralgm.components.impl.DocumentUndoManager; -import org.lateralgm.main.LGM; -import org.lateralgm.messages.Messages; -import org.lateralgm.resources.ResourceReference; -import org.lateralgm.resources.library.LibAction; -import org.lateralgm.resources.library.LibArgument; -import org.lateralgm.resources.sub.Action; -import org.lateralgm.resources.sub.Argument; -import org.lateralgm.resources.sub.Event; -import org.lateralgm.resources.sub.MainEvent; -import org.lateralgm.subframes.GmObjectFrame.EventGroupNode; -import org.lateralgm.subframes.GmObjectFrame.EventInstanceNode; -import org.lateralgm.subframes.GmObjectFrame.EventTree; - -import com.sun.xml.internal.txw2.Document; - -// TODO: This window can be reformated to work with timelines as well - -public class GmObjectInfoFrame extends JFrame implements ActionListener -{ - private static final long serialVersionUID = 1L; - protected JSpinner sSizes; - protected JEditorPane editor; - protected Color fgColor; - private RTFEditorKit rtf = new RTFEditorKit(); - private CustomFileChooser fc; - private GmObjectFrame gmObjFrame; - - public JToolBar makeToolbar() - { - JToolBar tb = new JToolBar(); - tb.add(addToolbarItem("GmObjectInfoFrame.CONFIRM")); - tb.addSeparator(); - tb.add(addToolbarItem("GmObjectInfoFrame.FILESAVE")); - tb.add(addToolbarItem("GmObjectInfoFrame.PRINT")); - tb.addSeparator(); - tb.add(addToolbarItem("GmObjectInfoFrame.COPY")); - return tb; - } - -public JPopupMenu makeContextMenu() - { - // build popup menu - final JPopupMenu popup = new JPopupMenu(); - JMenuItem item; - - item = addItem("GmObjectInfoFrame.COPY"); //$NON-NLS-1$ - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_DOWN_MASK)); - popup.add(item); - popup.addSeparator(); - item = addItem("GmObjectInfoFrame.SELECTALL"); //$NON-NLS-1$ - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,KeyEvent.CTRL_DOWN_MASK)); - popup.add(item); - - editor.setComponentPopupMenu(popup); - editor.addMouseListener(new MouseAdapter() { - - @Override - public void mousePressed(MouseEvent e) { - showPopup(e); - } - - @Override - public void mouseReleased(MouseEvent e) { - showPopup(e); - } - - private void showPopup(MouseEvent e) { - if (e.isPopupTrigger()) { - popup.show(e.getComponent(), e.getX(), e.getY()); - } - } - }); - - return popup; -} - -public JMenuItem addItem(String key) -{ - JMenuItem item = new JMenuItem(Messages.getString(key)); - item.setIcon(LGM.getIconForKey(key)); - item.setActionCommand(key); - item.addActionListener(this); - return item; -} - -public JButton addToolbarItem(String key) -{ - JButton item = new JButton(); - item.setToolTipText(Messages.getString(key)); - item.setIcon(LGM.getIconForKey(key)); - item.setActionCommand(key); - item.addActionListener(this); - return item; -} - public String loopActionsToString(List list) - { - String info = ""; - int lms = list.size(); - for (int i = 0; i < lms; i++) - { - Action a = list.get(i); - LibAction la = a.getLibAction(); - - List args = a.getArguments(); - LibArgument[] libargs = la.libArguments; - - /* this is code that could be used to make the information more detailed with exact parameter values - * i would also suggest adding this as a function to the action or lib action to convert it into a descriptive - * string instead of just a generic list description - String text = la.hintText; - for (int ii = 0; ii < args.size(); ii++) - { - text = text.replace("@" + ii, args.get(ii).toString(libargs[ii])); - } - */ - String text = la.description; - - if (la.actionKind == Action.ACT_CODE) - { - text += "\n**** BEGIN ****"; - text += "\n" + args.get(args.size() - 1).toString(libargs[args.size() - 1]); - text += "\n**** END ****"; - } - - info += "\n" + i + " " + text; - } - - return info; - } - - public void updateObjectInfo() - { - String objInfo = "------ Properties ------\n\n"; - ResourceReference res; - objInfo += Messages.getString("GmObjectFrame.NAME") + ": " + gmObjFrame.name.getText() + "\n"; - - res = gmObjFrame.parent.getSelected(); - objInfo += Messages.getString("GmObjectFrame.PARENT") + ": "; - if (res != null) { - objInfo += res.get().getName(); - } else { - objInfo += Messages.getString("GmObjectFrame.NO_PARENT"); - } - objInfo += "\n"; - - res = gmObjFrame.sprite.getSelected(); - objInfo += Messages.getString("GmObjectFrame.SPRITE") + ": "; - if (res != null) { - objInfo += res.get().getName(); - } else { - objInfo += Messages.getString("GmObjectFrame.NO_SPRITE"); - } - objInfo += "\n"; - - res = gmObjFrame.mask.getSelected(); - objInfo += Messages.getString("GmObjectFrame.MASK") + ": "; - if (res != null) { - objInfo += res.get().getName(); - } else { - objInfo += Messages.getString("GmObjectFrame.SAME_AS_SPRITE"); - } - objInfo += "\n"; - - objInfo += Messages.getString("GmObjectFrame.VISIBLE") + ": " + gmObjFrame.visible.isSelected() + "\n"; - objInfo += Messages.getString("GmObjectFrame.SOLID") + ": " + gmObjFrame.solid.isSelected() + "\n"; - objInfo += Messages.getString("GmObjectFrame.DEPTH") + ": " + gmObjFrame.depth.getValue().toString() + "\n"; - objInfo += Messages.getString("GmObjectFrame.PERSISTENT") + ": " + gmObjFrame.persistent.isSelected() + "\n"; - - objInfo += "\n------ Events ------"; - - // this here will need rewritten if its ever planned that - // event tree nodes and event tree group nodes will have - // multiple child group nodes as this code is not recursive - // the event tree also needs to be abstracted enough for obtaining - // the information from other classes and components - // i dont like it as is - Robert B. Colton - - // Make the current selected event realize any recent changes to actions - DefaultMutableTreeNode node = (DefaultMutableTreeNode) gmObjFrame.events.getLastSelectedPathComponent(); - if (node != null) { - gmObjFrame.actions.setActionContainer((Event) node.getUserObject()); - } - - EventGroupNode e = (EventGroupNode)gmObjFrame.events.getModel().getRoot(); - if (e == null) - { - return; - } - EventInstanceNode etn, etnc; - for (int i=0; i 0) - { - for (int ii=0; ii 0) { - objInfo += loopActionsToString(etnc.getUserObject().actions); - } else { - objInfo += "\n0 " + Messages.getString("GmObjectFrame.EMPTY"); - } - } - } else { - etn = (EventInstanceNode) e.getChildAt(i); - objInfo += "\n\n " + etn.toString(); - objInfo += ":"; - if (etn.getUserObject().actions.size() > 0) { - objInfo += loopActionsToString(etn.getUserObject().actions); - } else { - objInfo += "\n0 " + Messages.getString("GmObjectFrame.EMPTY"); - } - } - } - - editor.setText(objInfo); - editor.setCaretPosition(0); - editor.getCaret().setVisible(true); // show the caret - } - - public GmObjectInfoFrame(GmObjectFrame gmObjF) - { - gmObjFrame = gmObjF; - setAlwaysOnTop(true); - setDefaultCloseOperation(HIDE_ON_CLOSE); - setSize(440,500); - setTitle(Messages.getString("GmObjectInfoFrame.TITLE")); - setResizable(true); - setLocationRelativeTo(LGM.frame); - - fc = new CustomFileChooser("/org/lateralgm","LAST_GAMEINFO_DIR"); //$NON-NLS-1$ //$NON-NLS-2$ - fc.setFileFilter(new CustomFileFilter( - Messages.getString("GameInformationFrame.TYPE_RTF"),".rtf")); //$NON-NLS-1$ //$NON-NLS-2$ - add(makeToolbar(), BorderLayout.NORTH); - - JPanel p = new JPanel(); - GroupLayout gl = new GroupLayout(p); - gl.setAutoCreateGaps(true); - gl.setAutoCreateContainerGaps(true); - - //String key; - editor = new JEditorPane(); - //editor.setEditorKit(rtf); - p.add(editor, BorderLayout.CENTER); - add(new JScrollPane(editor),BorderLayout.CENTER); - editor.setText("object info will be displayed here when loaded"); - editor.setEditable(false); - editor.getCaret().setVisible(true); // show the caret anyway - makeContextMenu(); - } - - public void saveToFile() - { - fc.setDialogTitle(Messages.getString("GmObjectInfoFrame.SAVE_TITLE")); //$NON-NLS-1$ - if (fc.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) return; - String name = fc.getSelectedFile().getPath(); - if (CustomFileFilter.getExtension(name) == null) name += ".rtf"; //$NON-NLS-1$ - try - { - FileOutputStream i = new FileOutputStream(new File(name)); - rtf.write(i,editor.getDocument(),0,0); - i.close(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - public void actionPerformed(ActionEvent ev) - { - String com = ev.getActionCommand(); - if (com.equals("GmObjectInfoFrame.FILESAVE")) //$NON-NLS-1$ - { - saveToFile(); - return; - } - else if (com.equals("GmObjectInfoFrame.COPY")) //$NON-NLS-1$ - { - editor.copy(); - return; - } - else if (com.equals("GmObjectInfoFrame.SELECTALL")) //$NON-NLS-1$ - { - editor.selectAll(); - return; - } - else if (com.equals("GmObjectInfoFrame.CONFIRM")) //$NON-NLS-1$ - { - this.setVisible(false); - return; - } - - editor.getCaret().setVisible(true); // make sure caret stays visible - } -} \ No newline at end of file diff --git a/org/lateralgm/subframes/PreferencesFrame.java b/org/lateralgm/subframes/PreferencesFrame.java index f3307ffab..cba09e55e 100644 --- a/org/lateralgm/subframes/PreferencesFrame.java +++ b/org/lateralgm/subframes/PreferencesFrame.java @@ -13,7 +13,11 @@ import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Vector; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -27,6 +31,8 @@ import javax.swing.JTextField; import javax.swing.GroupLayout.Alignment; import javax.swing.LayoutStyle.ComponentPlacement; +import javax.swing.UIManager; +import javax.swing.UIManager.LookAndFeelInfo; import org.lateralgm.components.impl.DocumentUndoManager; import org.lateralgm.main.LGM; @@ -42,17 +48,30 @@ public class PreferencesFrame extends JFrame implements ActionListener protected DocumentUndoManager undoManager = new DocumentUndoManager(); protected Color fgColor; - JComboBox themeCombo, iconCombo, langCombo; + JComboBox themeCombo, iconCombo, langCombo, actionsCombo; JCheckBox dndEnable, restrictTreeEnable, extraNodesEnable; - JTextField iconPath, themePath, manualPath; + JTextField iconPath, themePath, manualPath, actionsPath; + + JTextField soundEditorPath, backgroundEditorPath, spriteEditorPath, codeEditorPath; + // Sounds use their own stored filename/extension, which may vary from sound to sound. + JTextField backgroundMIME, spriteMIME, scriptMIME; private JPanel makeGeneralPrefs() { JPanel p = new JPanel(); JLabel themeLabel = new JLabel(Messages.getString("PreferencesFrame.THEME") + ":"); - String[] themeOptions = { "Swing", "Native", "Nimbus", "Motif", "Metal", "GTK", "Windows", "Custom"}; - themeCombo = new JComboBox(themeOptions); + Vector comboBoxItems = new Vector(); + comboBoxItems.add("Swing"); + comboBoxItems.add("Native"); + LookAndFeelInfo lnfs[] = UIManager.getInstalledLookAndFeels(); + for (int i = 0; i < lnfs.length; i++) { + comboBoxItems.add(lnfs[i].getName()); + } + comboBoxItems.add("Custom"); + final DefaultComboBoxModel model = new DefaultComboBoxModel(comboBoxItems); + + themeCombo = new JComboBox(model); themeCombo.setSelectedItem(LGM.themename); JLabel iconLabel = new JLabel(Messages.getString("PreferencesFrame.ICONS") + ":"); String[] iconOptions = { "Swing", "Calico", "Custom" }; @@ -74,6 +93,12 @@ private JPanel makeGeneralPrefs() iconPath = new JTextField(Prefs.iconPath); JLabel manualPathLabel = new JLabel("Manual Path:"); manualPath = new JTextField(Prefs.manualPath); + JLabel actionsLabel = new JLabel(Messages.getString("PreferencesFrame.ACTIONLIBRARY") + ":"); + String[] actionsOptions = { "Standard", "Logic", "Custom" }; + actionsCombo = new JComboBox(actionsOptions); + actionsCombo.setSelectedItem(Prefs.actionLibrary); + actionsPath = new JTextField(); + actionsPath.setText(Prefs.userLibraryPath); GroupLayout gl = new GroupLayout(p); gl.setAutoCreateGaps(true); @@ -100,6 +125,10 @@ private JPanel makeGeneralPrefs() .addComponent(themePath) .addComponent(iconPath) .addComponent(manualPath)) + .addGroup(gl.createSequentialGroup() + .addComponent(actionsLabel) + .addComponent(actionsCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(actionsPath)) ); gl.setVerticalGroup( gl.createSequentialGroup() @@ -123,7 +152,11 @@ private JPanel makeGeneralPrefs() .addGroup(gl.createSequentialGroup() .addComponent(manualPathLabel) .addComponent(manualPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) - ); + .addGroup(gl.createParallelGroup(Alignment.BASELINE) + .addComponent(actionsLabel) + .addComponent(actionsCombo) + .addComponent(actionsPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + ); p.setLayout(gl); @@ -134,45 +167,31 @@ private JPanel makeMimePrefixPrefs() { JPanel p = new JPanel(); - Dimension preferredSize = new Dimension(100, 30); - JLabel spriteLabel = new JLabel("Sprite:"); JTextField spritePrefix = new JTextField("spr_"); - spritePrefix.setPreferredSize(preferredSize); JLabel soundLabel = new JLabel("Sound:"); JTextField soundPrefix = new JTextField("snd_"); - soundPrefix.setPreferredSize(preferredSize); JLabel backgroundLabel = new JLabel("Background:"); JTextField backgroundPrefix = new JTextField("bg_"); - backgroundPrefix.setPreferredSize(preferredSize); JLabel pathLabel = new JLabel("Path:"); JTextField pathPrefix = new JTextField("pth_"); - pathPrefix.setPreferredSize(preferredSize); JLabel scriptLabel = new JLabel("Script:"); JTextField scriptPrefix = new JTextField("scr_"); - scriptPrefix.setPreferredSize(preferredSize); JLabel fontLabel = new JLabel("Font:"); JTextField fontPrefix = new JTextField("fnt_"); - fontPrefix.setPreferredSize(preferredSize); JLabel timelineLabel = new JLabel("Timeline:"); JTextField timelinePrefix = new JTextField("tl_"); - timelinePrefix.setPreferredSize(preferredSize); JLabel objectLabel = new JLabel("Object:"); JTextField objectPrefix = new JTextField("obj_"); - objectPrefix.setPreferredSize(preferredSize); JLabel roomLabel = new JLabel("Room:"); JTextField roomPrefix = new JTextField("rm_"); - roomPrefix.setPreferredSize(preferredSize); JLabel backgroundMIMELabel = new JLabel("Background MIME:"); - JTextField backgroundMIME = new JTextField(Prefs.externalBackgroundExtension); - backgroundMIME.setPreferredSize(preferredSize); + backgroundMIME = new JTextField(Prefs.externalBackgroundExtension); JLabel spriteMIMELabel = new JLabel("Sprite MIME:"); - JTextField spriteMIME = new JTextField(Prefs.externalSpriteExtension); - spriteMIME.setPreferredSize(preferredSize); + spriteMIME = new JTextField(Prefs.externalSpriteExtension); JLabel scriptMIMELabel = new JLabel("Script MIME:"); - JTextField scriptMIME = new JTextField(Prefs.externalScriptExtension); - scriptMIME.setPreferredSize(preferredSize); + scriptMIME = new JTextField(Prefs.externalScriptExtension); GroupLayout gl = new GroupLayout(p); gl.setAutoCreateGaps(true); @@ -185,54 +204,45 @@ private JPanel makeMimePrefixPrefs() .addComponent(timelineLabel) .addComponent(pathLabel) .addComponent(spriteLabel)) - .addPreferredGap(ComponentPlacement.RELATED) - .addGroup(gl.createParallelGroup(Alignment.LEADING, false) - .addGroup(gl.createSequentialGroup() - .addComponent(spritePrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(soundLabel)) - .addGroup(gl.createSequentialGroup() - .addComponent(timelinePrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(objectLabel)) - .addGroup(gl.createSequentialGroup() - .addComponent(pathPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(scriptLabel))) - .addPreferredGap(ComponentPlacement.RELATED) + .addGroup(gl.createParallelGroup(Alignment.LEADING) + .addComponent(spritePrefix) + .addComponent(timelinePrefix) + .addComponent(pathPrefix)) .addGroup(gl.createParallelGroup(Alignment.LEADING, false) - .addGroup(gl.createSequentialGroup() + .addComponent(soundLabel) + .addComponent(objectLabel) + .addComponent(scriptLabel)) + .addGroup(gl.createParallelGroup(Alignment.LEADING) .addComponent(soundPrefix) - .addPreferredGap(ComponentPlacement.RELATED) - .addComponent(backgroundLabel)) - .addGroup(gl.createSequentialGroup() - .addComponent(scriptPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(fontLabel)) - .addGroup(gl.createSequentialGroup() - .addComponent(objectPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(roomLabel))) - .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(scriptPrefix) + .addComponent(objectPrefix)) + .addGroup(gl.createParallelGroup(Alignment.LEADING, false) + .addComponent(backgroundLabel) + .addComponent(fontLabel) + .addComponent(roomLabel)) .addGroup(gl.createParallelGroup(Alignment.LEADING) - .addComponent(roomPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(fontPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(backgroundPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addComponent(roomPrefix) + .addComponent(fontPrefix) + .addComponent(backgroundPrefix))) .addGroup(gl.createSequentialGroup() .addComponent(backgroundMIMELabel) - .addComponent(backgroundMIME, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) + .addComponent(backgroundMIME) + .addComponent(spriteMIMELabel) + .addComponent(spriteMIME) + .addComponent(scriptMIMELabel) + .addComponent(scriptMIME)) ); gl.setVerticalGroup( - gl.createParallelGroup(Alignment.LEADING) + gl.createSequentialGroup() .addGroup(gl.createSequentialGroup() .addGroup(gl.createParallelGroup(Alignment.BASELINE) .addComponent(soundPrefix) .addComponent(backgroundLabel) - .addComponent(backgroundPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(backgroundPrefix) .addComponent(spritePrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(spriteLabel) .addComponent(soundLabel)) - .addPreferredGap(ComponentPlacement.RELATED) + //.addPreferredGap(ComponentPlacement.RELATED) .addGroup(gl.createParallelGroup(Alignment.BASELINE) .addComponent(pathLabel) .addComponent(pathPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) @@ -240,18 +250,21 @@ private JPanel makeMimePrefixPrefs() .addComponent(fontPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(scriptLabel) .addComponent(fontLabel)) - .addPreferredGap(ComponentPlacement.RELATED) + //.addPreferredGap(ComponentPlacement.RELATED) .addGroup(gl.createParallelGroup(Alignment.BASELINE) .addComponent(timelinePrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(objectPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(roomPrefix, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(backgroundMIMELabel) .addComponent(timelineLabel) .addComponent(objectLabel) - .addComponent(roomLabel, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) - .addGroup(gl.createSequentialGroup() + .addComponent(roomLabel, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE))) + .addGroup(gl.createParallelGroup(Alignment.BASELINE) .addComponent(backgroundMIMELabel) - .addComponent(backgroundMIME, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))) + .addComponent(backgroundMIME, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(spriteMIMELabel) + .addComponent(spriteMIME, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(scriptMIMELabel) + .addComponent(scriptMIME, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) ); p.setLayout(gl); @@ -267,29 +280,32 @@ private JPanel makeExternalEditorPrefs() Messages.getString("PreferencesFrame.SYSTEM"), Messages.getString("PreferencesFrame.CUSTOM") }; + // Uncomment the shit for this panel if you dun want people messin with commands + // too lazy to code it. + JLabel codeEditorLabel = new JLabel(Messages.getString("PreferencesFrame.CODE_EDITOR") + ":"); - JComboBox codeEditorCombo = new JComboBox(defaultEditorOptions); - codeEditorCombo.setSelectedItem(0); - JTextField codeEditorPath = new JTextField(); - JButton codeEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); + //JComboBox codeEditorCombo = new JComboBox(defaultEditorOptions); + //codeEditorCombo.setSelectedItem(0); + codeEditorPath = new JTextField(Prefs.externalScriptEditorCommand); + //JButton codeEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); JLabel spriteEditorLabel = new JLabel(Messages.getString("PreferencesFrame.SPRITE_EDITOR") + ":"); - JComboBox spriteEditorCombo = new JComboBox(defaultEditorOptions); - spriteEditorCombo.setSelectedItem(0); - JTextField spriteEditorPath = new JTextField(); - JButton spriteEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); + //JComboBox spriteEditorCombo = new JComboBox(defaultEditorOptions); + //spriteEditorCombo.setSelectedItem(0); + spriteEditorPath = new JTextField(Prefs.externalSpriteEditorCommand); + //JButton spriteEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); JLabel backgroundEditorLabel = new JLabel(Messages.getString("PreferencesFrame.BACKGROUND_EDITOR") + ":"); - JComboBox backgroundEditorCombo = new JComboBox(defaultEditorOptions); - backgroundEditorCombo.setSelectedItem(0); - JTextField backgroundEditorPath = new JTextField(); - JButton backgroundEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); + //JComboBox backgroundEditorCombo = new JComboBox(defaultEditorOptions); + //backgroundEditorCombo.setSelectedItem(0); + backgroundEditorPath = new JTextField(Prefs.externalBackgroundEditorCommand); + //JButton backgroundEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); JLabel soundEditorLabel = new JLabel(Messages.getString("PreferencesFrame.SOUND_EDITOR") + ":"); - JComboBox soundEditorCombo = new JComboBox(defaultEditorOptions); - soundEditorCombo.setSelectedItem(0); - JTextField soundEditorPath = new JTextField(); - JButton soundEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); + //JComboBox soundEditorCombo = new JComboBox(defaultEditorOptions); + //soundEditorCombo.setSelectedItem(0); + soundEditorPath = new JTextField(Prefs.externalSoundEditorCommand); + //JButton soundEditorButton = new JButton(Messages.getString("PreferencesFrame.FIND")); GroupLayout gl = new GroupLayout(p); gl.setAutoCreateGaps(true); @@ -303,44 +319,44 @@ private JPanel makeExternalEditorPrefs() .addComponent(soundEditorLabel) .addComponent(backgroundEditorLabel) .addComponent(codeEditorLabel)) - .addGroup(gl.createParallelGroup() - .addComponent(spriteEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(soundEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(backgroundEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) - .addComponent(codeEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + //.addGroup(gl.createParallelGroup() + //.addComponent(spriteEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + //.addComponent(soundEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + //.addComponent(backgroundEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + //.addComponent(codeEditorCombo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addGroup(gl.createParallelGroup() .addComponent(spriteEditorPath) .addComponent(soundEditorPath) .addComponent(backgroundEditorPath) .addComponent(codeEditorPath)) - .addGroup(gl.createParallelGroup() - .addComponent(spriteEditorButton) - .addComponent(soundEditorButton) - .addComponent(backgroundEditorButton) - .addComponent(codeEditorButton)) + //.addGroup(gl.createParallelGroup() + //.addComponent(spriteEditorButton) + //.addComponent(soundEditorButton) + //.addComponent(backgroundEditorButton) + //.addComponent(codeEditorButton)) ); gl.setVerticalGroup( gl.createSequentialGroup() .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(spriteEditorLabel) - .addComponent(spriteEditorCombo) - .addComponent(spriteEditorPath) - .addComponent(spriteEditorButton)) + //.addComponent(spriteEditorCombo) + .addComponent(spriteEditorPath)) + //.addComponent(spriteEditorButton)) .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(soundEditorLabel) - .addComponent(soundEditorCombo) - .addComponent(soundEditorPath) - .addComponent(soundEditorButton)) + //.addComponent(soundEditorCombo) + .addComponent(soundEditorPath)) + //.addComponent(soundEditorButton)) .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(backgroundEditorLabel) - .addComponent(backgroundEditorCombo) - .addComponent(backgroundEditorPath) - .addComponent(backgroundEditorButton)) + //.addComponent(backgroundEditorCombo) + .addComponent(backgroundEditorPath)) + //.addComponent(backgroundEditorButton)) .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(codeEditorLabel) - .addComponent(codeEditorCombo) - .addComponent(codeEditorPath) - .addComponent(codeEditorButton)) + //.addComponent(codeEditorCombo) + .addComponent(codeEditorPath)) + //.addComponent(codeEditorButton)) ); p.setLayout(gl); @@ -423,11 +439,22 @@ public void SavePreferences() PrefsStore.setDNDEnabled(dndEnable.isSelected()); PrefsStore.setExtraNodes(extraNodesEnable.isSelected()); PrefsStore.setLanguageName((String)langCombo.getSelectedItem()); + PrefsStore.setActionLibrary((String)actionsCombo.getSelectedItem()); + PrefsStore.setUserLibraryPath(actionsPath.getText()); + PrefsStore.setSpriteExt(spriteMIME.getText()); + PrefsStore.setBackgroundExt(backgroundMIME.getText()); + PrefsStore.setScriptExt(scriptMIME.getText()); + PrefsStore.setBackgroundEditorCommand(backgroundEditorPath.getText()); + PrefsStore.setSpriteEditorCommand(spriteEditorPath.getText()); + PrefsStore.setSoundEditorCommand(soundEditorPath.getText()); + PrefsStore.setScriptEditorCommand(codeEditorPath.getText()); } public void ResetPreferences() { //TODO: Reset preferences to their active state when this frame was first opened + // For this one just copy the shit above where I give the controls their default + // values froms Prefs. } public void ResetPreferencesToDefault() diff --git a/org/lateralgm/subframes/ResourceFrame.java b/org/lateralgm/subframes/ResourceFrame.java index 6a8ccbd1a..be40a3d29 100644 --- a/org/lateralgm/subframes/ResourceFrame.java +++ b/org/lateralgm/subframes/ResourceFrame.java @@ -99,7 +99,7 @@ public ResourceFrame makeFrame(Resource r, ResNode node) if (kind == GameInformation.class) return LGM.getGameInfo(); if (kind == GameSettings.class) return LGM.getGameSettings(); if (kind == Extensions.class) return LGM.getGameExtensions(); - //extensions returns null too, for now + return null; } }