Changeset 608
- Timestamp:
- Jan 14, 2013, 6:49:25 PM (12 years ago)
- Location:
- AE/installer2/src/net/oni2/aeinstaller
- Files:
-
- 1 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties
r607 r608 1 1 appname=AE Installer 2 2 appversion=0.7 12 appversion=0.75 3 3 4 4 invalidPath.title=Wrong directory -
AE/installer2/src/net/oni2/aeinstaller/Images.properties
r605 r608 27 27 img.tools=/net/oni2/aeinstaller/images/open_icon_library/tools-hammer_and_nails.png 28 28 img.install=/net/oni2/aeinstaller/images/open_icon_library/run-build-install-root.png 29 img.folder=/net/oni2/aeinstaller/images/open_icon_library/folder-open-3.png 29 30 30 31 img.ae=/net/oni2/aeinstaller/images/AElogo.png -
AE/installer2/src/net/oni2/aeinstaller/backend/mods/EBSLInstallType.java
r600 r608 5 5 */ 6 6 public enum EBSLInstallType { 7 /**8 * No BSL files9 */10 NONE,11 7 /** 12 8 * Normal BSL install mode -
AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java
r604 r608 29 29 private String version = ""; 30 30 private String creator = ""; 31 private EBSLInstallType bslInstallType = null;31 private EBSLInstallType bslInstallType = EBSLInstallType.NORMAL; 32 32 private String description = ""; 33 33 private double aeVersion = 0; … … 36 36 private net.oni2.aeinstaller.backend.depot.model.File file = null; 37 37 38 private HashSet<Integer> conflicts = new HashSet<Integer>();38 private HashSet<Integer> incompatibilities = new HashSet<Integer>(); 39 39 private HashSet<Integer> dependencies = new HashSet<Integer>(); 40 40 … … 51 51 name = nm.getTitle(); 52 52 packageNumber = nm.getPackageNumber(); 53 platform = nm.getPlatform(); 53 54 for (TaxonomyTerm tt : nm.getTypes()) { 54 55 Type t = ModManager.getInstance().getTypeByName(tt.getName()); 55 56 types.add(t); 56 if (!nm.isTool() )57 if (!nm.isTool() && isValidOnPlatform()) 57 58 t.addEntry(this); 58 59 } 59 platform = nm.getPlatform();60 60 version = nm.getVersion(); 61 61 creator = nm.getCreator(); … … 101 101 if (sVal.equalsIgnoreCase("addon")) 102 102 bslInstallType = EBSLInstallType.ADDON; 103 else if (sVal.equalsIgnoreCase("yes"))104 bslInstallType = EBSLInstallType.NORMAL;105 else106 bslInstallType = EBSLInstallType.NONE;107 103 } else if (sName.equalsIgnoreCase("ModVersion")) { 108 104 if (node == null) … … 111 107 if (node == null) 112 108 description = sVal.replaceAll("\\\\n", "<br>"); 113 } else if (sName.equalsIgnoreCase("Depends ")) {109 } else if (sName.equalsIgnoreCase("DependsOn")) { 114 110 String[] depsS = sVal.split(","); 115 111 for (String s : depsS) { … … 123 119 } 124 120 } 125 } else if (sName.equalsIgnoreCase(" Conflicts")) {121 } else if (sName.equalsIgnoreCase("IncompatibleWith")) { 126 122 String[] confS = sVal.split(","); 127 123 for (String s : confS) { 128 124 try { 129 125 int conf = Integer.parseInt(s); 130 conflicts.add(conf);126 incompatibilities.add(conf); 131 127 } catch (NumberFormatException e) { 132 128 System.err 133 .format("Mod %05d does contain a non-number dependency: '%s'\n",129 .format("Mod %05d does contain a non-number incompatibility: '%s'\n", 134 130 packageNumber, s); 135 131 } … … 182 178 updateLocalData(); 183 179 184 Type t = ModManager.getInstance().getTypeByName("-Local-");185 types.add(t);186 t.addEntry(this);187 188 180 platform = ECompatiblePlatform.BOTH; 189 181 } … … 323 315 324 316 /** 325 * @return the conflicts326 */ 327 public HashSet<Integer> get Conflicts() {328 return conflicts;317 * @return the incompabitilities 318 */ 319 public HashSet<Integer> getIncompabitilities() { 320 return incompatibilities; 329 321 } 330 322 … … 339 331 * @return Is this mod valid on the running platform? 340 332 */ 341 public boolean validOnPlatform() { 342 ECompatiblePlatform plat = platform; 343 switch (plat) { 333 public boolean isValidOnPlatform() { 334 switch (platform) { 344 335 case BOTH: 345 336 return true; -
AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java
r604 r608 43 43 Vector<Integer> res = new Vector<Integer>(); 44 44 try { 45 FileInputStream fis = new FileInputStream(f); 46 XStream xs = new XStream(new StaxDriver()); 47 Object obj = xs.fromXML(fis); 48 if (obj instanceof Vector<?>) 49 res = (Vector<Integer>) obj; 50 fis.close(); 45 if (f.exists()) { 46 FileInputStream fis = new FileInputStream(f); 47 XStream xs = new XStream(new StaxDriver()); 48 Object obj = xs.fromXML(fis); 49 if (obj instanceof Vector<?>) 50 res = (Vector<Integer>) obj; 51 fis.close(); 52 } 51 53 } catch (FileNotFoundException e) { 52 54 e.printStackTrace(); … … 87 89 mods = new HashMap<Integer, Mod>(); 88 90 89 types.put("-Local-", new Type("-Local-", null)); 91 Type localType = new Type("-Local-", null); 92 types.put("-Local-", localType); 90 93 91 94 for (TaxonomyTerm tt : DepotManager.getInstance() … … 120 123 121 124 for (Mod m : modFolders.values()) { 125 if (!m.isMandatoryMod()) { 126 localType.addEntry(m); 127 m.getTypes().add(localType); 128 } 122 129 mods.put(m.getPackageNumber(), m); 123 130 } … … 152 159 153 160 /** 154 * @return Collection of mods 155 */ 156 public Collection<Mod> getMods() { 157 return mods.values(); 158 } 159 160 /** 161 * @return Mods which are always installed 161 * @return Collection of mods valid on this platform and not mandatory 162 */ 163 public Collection<Mod> getModsValidAndNotMandatory() { 164 Vector<Mod> res = new Vector<Mod>(); 165 for (Mod m : mods.values()) 166 if (m.isValidOnPlatform() && !m.isMandatoryMod()) 167 res.add(m); 168 return res; 169 } 170 171 /** 172 * @return Mods which are always installed and valid on this platform 162 173 */ 163 174 public TreeSet<Mod> getMandatoryMods() { 164 175 TreeSet<Mod> res = new TreeSet<Mod>(); 165 176 for (Mod m : mods.values()) { 166 if (m.is MandatoryMod())167 res.add(m); 168 } 169 return res; 170 } 171 172 /** 173 * @return Collection of tools 177 if (m.isValidOnPlatform() && m.isMandatoryMod()) 178 res.add(m); 179 } 180 return res; 181 } 182 183 /** 184 * @return Collection of tools valid on this platform and not mandatory 174 185 */ 175 186 public Collection<Mod> getTools() { 176 return tools.values(); 177 } 178 179 /** 180 * @return Tools which are always installed 187 Vector<Mod> res = new Vector<Mod>(); 188 for (Mod m : tools.values()) 189 if (m.isValidOnPlatform() && !m.isMandatoryMod()) 190 res.add(m); 191 return res; 192 } 193 194 /** 195 * @return Tools which are always installed and valid on this platform 181 196 */ 182 197 public TreeSet<Mod> getMandatoryTools() { 183 198 TreeSet<Mod> res = new TreeSet<Mod>(); 184 199 for (Mod m : tools.values()) { 185 if (m.is MandatoryMod())200 if (m.isValidOnPlatform() && m.isMandatoryMod()) 186 201 res.add(m); 187 202 } … … 230 245 231 246 /** 232 * Check for conflicts between given mods247 * Check for incompabitilites between given mods 233 248 * 234 249 * @param mods 235 250 * Mods to check 236 * @return Conflictingmods237 */ 238 public HashMap<Mod, HashSet<Mod>> check Conflicts(TreeSet<Mod> mods) {251 * @return Incompatible mods 252 */ 253 public HashMap<Mod, HashSet<Mod>> checkIncompabitilites(TreeSet<Mod> mods) { 239 254 // TODO: Verify functionality 240 255 HashMap<Mod, HashSet<Mod>> res = new HashMap<Mod, HashSet<Mod>>(); 241 256 242 257 for (Mod m : mods) { 243 for (int confNum : m.get Conflicts()) {258 for (int confNum : m.getIncompabitilities()) { 244 259 Mod other = getModByNumber(confNum); 245 260 if (mods.contains(other)) { -
AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java
r606 r608 9 9 import java.text.SimpleDateFormat; 10 10 import java.util.Date; 11 import java.util.HashMap; 11 12 import java.util.List; 12 13 import java.util.Scanner; … … 18 19 import net.oni2.aeinstaller.backend.Settings; 19 20 import net.oni2.aeinstaller.backend.Settings.Platform; 21 import net.oni2.aeinstaller.backend.mods.EBSLInstallType; 20 22 import net.oni2.aeinstaller.backend.mods.Mod; 21 23 import net.oni2.aeinstaller.backend.mods.ModManager; … … 27 29 */ 28 30 public class Installer { 31 private static FileFilter dirFileFilter = new FileFilter() { 32 @Override 33 public boolean accept(File pathname) { 34 return pathname.isDirectory(); 35 } 36 }; 37 29 38 /** 30 39 * @return Is Edition Core initialized … … 97 106 } 98 107 } 108 99 109 /** 100 110 * Install the given set of mods … … 116 126 ModManager.getInstance().saveModSelection(installCfg, mods); 117 127 118 Vector<File> folders = new Vector<File>();119 folders .add(Paths.getVanillaOnisPath());128 Vector<File> foldersOni = new Vector<File>(); 129 foldersOni.add(Paths.getVanillaOnisPath()); 120 130 121 131 for (Mod m : mods) { … … 127 137 File oniWin = new File(oni, "win_only"); 128 138 if (oniCommon.exists()) 129 folders .add(oniCommon);139 foldersOni.add(oniCommon); 130 140 if (Settings.getPlatform() == Platform.MACOS 131 141 && oniMac.exists()) 132 folders .add(oniMac);142 foldersOni.add(oniMac); 133 143 else if (oniWin.exists()) 134 folders .add(oniWin);144 foldersOni.add(oniWin); 135 145 } else { 136 folders.add(oni); 137 } 138 } 139 } 140 141 combineBinaryFiles(folders, listener); 142 143 // TODO: bsl() 146 foldersOni.add(oni); 147 } 148 } 149 } 150 combineBinaryFiles(foldersOni, listener); 151 combineBSLFolders(mods, listener); 152 } 153 154 private static void combineBSLFolders(TreeSet<Mod> mods, 155 InstallProgressListener listener) { 156 listener.installProgressUpdate(95, 100, "Installing BSL files"); 157 158 HashMap<EBSLInstallType, Vector<Mod>> modsToInclude = new HashMap<EBSLInstallType, Vector<Mod>>(); 159 modsToInclude.put(EBSLInstallType.NORMAL, new Vector<Mod>()); 160 modsToInclude.put(EBSLInstallType.ADDON, new Vector<Mod>()); 161 162 for (Mod m : mods.descendingSet()) { 163 File bsl = new File(m.getLocalPath(), "bsl"); 164 if (bsl.exists()) { 165 if (m.hasSeparatePlatformDirs()) { 166 File bslCommon = new File(bsl, "common"); 167 File bslMac = new File(bsl, "mac_only"); 168 File bslWin = new File(bsl, "win_only"); 169 if ((Settings.getPlatform() == Platform.MACOS && bslMac 170 .exists()) 171 || ((Settings.getPlatform() == Platform.WIN || Settings 172 .getPlatform() == Platform.LINUX) && bslWin 173 .exists()) || bslCommon.exists()) { 174 modsToInclude.get(m.getBSLInstallType()).add(m); 175 } 176 } else { 177 modsToInclude.get(m.getBSLInstallType()).add(m); 178 } 179 } 180 } 181 182 for (Mod m : modsToInclude.get(EBSLInstallType.NORMAL)) { 183 copyBSL(m, false); 184 } 185 for (Mod m : modsToInclude.get(EBSLInstallType.ADDON)) { 186 copyBSL(m, true); 187 } 188 } 189 190 private static void copyBSL(Mod sourceMod, boolean addon) { 191 File targetBaseFolder = new File(Paths.getEditionGDF(), "IGMD"); 192 if (!targetBaseFolder.exists()) 193 targetBaseFolder.mkdir(); 194 195 Vector<File> sources = new Vector<File>(); 196 File bsl = new File(sourceMod.getLocalPath(), "bsl"); 197 if (sourceMod.hasSeparatePlatformDirs()) { 198 File bslCommon = new File(bsl, "common"); 199 File bslMac = new File(bsl, "mac_only"); 200 File bslWin = new File(bsl, "win_only"); 201 if (Settings.getPlatform() == Platform.MACOS && bslMac.exists()) { 202 for (File f : bslMac.listFiles(dirFileFilter)) { 203 File targetBSL = new File(targetBaseFolder, f.getName()); 204 if (addon || !targetBSL.exists()) 205 sources.add(f); 206 } 207 } 208 if ((Settings.getPlatform() == Platform.WIN || Settings 209 .getPlatform() == Platform.LINUX) && bslWin.exists()) { 210 for (File f : bslWin.listFiles(dirFileFilter)) { 211 File targetBSL = new File(targetBaseFolder, f.getName()); 212 if (addon || !targetBSL.exists()) 213 sources.add(f); 214 } 215 } 216 if (bslCommon.exists()) { 217 for (File f : bslCommon.listFiles(dirFileFilter)) { 218 File targetBSL = new File(targetBaseFolder, f.getName()); 219 if (addon || !targetBSL.exists()) 220 sources.add(f); 221 } 222 } 223 } else { 224 for (File f : bsl.listFiles(dirFileFilter)) { 225 File targetBSL = new File(targetBaseFolder, f.getName()); 226 if (addon || !targetBSL.exists()) 227 sources.add(f); 228 } 229 } 230 231 System.out.println("For mod: " + sourceMod.getName() 232 + " install BSL folders: " + sources.toString()); 233 for (File f : sources) { 234 File targetPath = new File(targetBaseFolder, f.getName()); 235 if (!targetPath.exists()) 236 targetPath.mkdir(); 237 for (File fbsl : f.listFiles()) { 238 File targetFile = new File(targetPath, fbsl.getName()); 239 if (!targetFile.exists()) { 240 try { 241 FileUtils.copyFile(fbsl, targetFile); 242 } catch (IOException e) { 243 // TODO Auto-generated catch block 244 e.printStackTrace(); 245 } 246 } 247 } 248 } 144 249 } 145 250 … … 171 276 String s : levels.keySet()) 172 277 totalSteps++; 278 totalSteps++; 173 279 174 280 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); … … 202 308 203 309 log.println(); 310 stepsDone++; 204 311 } 205 312 -
AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java
r606 r608 1 1 package net.oni2.aeinstaller.gui; 2 2 3 import java.awt.Desktop; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.awt.event.MouseAdapter; 7 import java.awt.event.MouseEvent; 3 8 import java.io.File; 4 9 import java.io.IOException; … … 19 24 import javax.swing.JLabel; 20 25 import javax.swing.JMenu; 26 import javax.swing.JMenuItem; 21 27 import javax.swing.JOptionPane; 28 import javax.swing.JPopupMenu; 22 29 import javax.swing.JSplitPane; 23 30 import javax.swing.JTable; … … 124 131 tblMods.getSelectionModel().addListSelectionListener( 125 132 new ListSelectionListener() { 126 127 133 @Override 128 134 public void valueChanged(ListSelectionEvent e) { … … 138 144 } 139 145 }); 140 146 tblMods.addMouseListener(new MouseAdapter() { 147 private void common(MouseEvent e) { 148 int r = tblMods.rowAtPoint(e.getPoint()); 149 if (r >= 0 && r < tblMods.getRowCount()) 150 tblMods.setRowSelectionInterval(r, r); 151 else 152 tblMods.clearSelection(); 153 154 int rowindex = tblMods.getSelectedRow(); 155 if (rowindex >= 0) { 156 if (e.isPopupTrigger() 157 && e.getComponent() instanceof JTable) { 158 int modelRow = tblMods.convertRowIndexToModel(rowindex); 159 final Mod mod = (Mod) model.getValueAt(modelRow, -1); 160 161 if (mod.isLocalAvailable()) { 162 JPopupMenu popup = new JPopupMenu(); 163 JMenuItem openModFolder = new JMenuItem(bundle 164 .getString("openModFolder.text")); 165 openModFolder 166 .addActionListener(new ActionListener() { 167 @Override 168 public void actionPerformed( 169 ActionEvent arg0) { 170 try { 171 Desktop.getDesktop().open( 172 mod.getLocalPath()); 173 } catch (IOException e) { 174 e.printStackTrace(); 175 } 176 } 177 }); 178 popup.add(openModFolder); 179 popup.show(e.getComponent(), e.getX(), e.getY()); 180 } 181 } 182 } 183 } 184 185 @Override 186 public void mousePressed(MouseEvent e) { 187 common(e); 188 } 189 190 @Override 191 public void mouseReleased(MouseEvent e) { 192 common(e); 193 } 194 }); 141 195 // To get checkbox-cells with background of row 142 196 ((JComponent) tblMods.getDefaultRenderer(Boolean.class)) … … 163 217 164 218 private void exit() { 165 setVisible(false);166 219 dispose(); 220 System.exit(0); 167 221 } 168 222 … … 199 253 private void checkUpdates() { 200 254 if (Settings.getInstance().get("notifyupdates", true)) { 255 // TODO 201 256 } 202 257 } … … 365 420 } else { 366 421 HashMap<Mod, HashSet<Mod>> conflicts = ModManager.getInstance() 367 .check Conflicts(mods);422 .checkIncompabitilites(mods); 368 423 if (conflicts.size() > 0) { 369 System.err.println(" Conflictingmods: "424 System.err.println("Incompatible mods: " 370 425 + conflicts.toString()); 371 426 break; … … 377 432 378 433 if (instReady) { 434 System.out.println("Install mods: " + mods.toString()); 435 379 436 Installer.install(mods, new InstallProgressListener() { 380 437 @Override … … 462 519 break; 463 520 case MACOS: 464 params.add(new File(Paths.getEditionBasePath(), "Oni")465 .getPath());521 params.add(new File(Paths.getEditionBasePath(), 522 "Oni.app/Contents/MacOS/Oni").getPath()); 466 523 break; 467 524 case LINUX: … … 512 569 } 513 570 571 @SuppressWarnings("unused") 572 private void openEditionFolder() { 573 try { 574 Desktop.getDesktop().open(Paths.getEditionBasePath()); 575 } catch (IOException e) { 576 e.printStackTrace(); 577 } 578 } 579 514 580 @Override 515 581 public void handleAbout(ApplicationEvent event) { -
AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties
r606 r608 15 15 menu.runOniWin=Run Oni (&window) 16 16 menu.runOniWinTooltip=Run Oni in windowed mode 17 menu.openEditionFolder=Open Edition folder 18 menu.openEditionFolderTooltip=Open the Edition folder in the file explorer 17 19 menu.loadConfig=&Load configuration... 18 20 menu.loadConfigTooltip=Load configuration … … 31 33 lblModTypes.text=Mod type: 32 34 lblDownloadSize.text=Size of files to download: 35 36 openModFolder.text=Open mod folder 33 37 34 38 lblSubmitter.text=Submitter: -
AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml
r606 r608 15 15 - Action(name=runOniFull, text=menu.runOniFull, toolTipText=menu.runOniFullTooltip, icon=img.oni, onAction=[oniFull]) 16 16 - Action(name=runOniWin, text=menu.runOniWin, toolTipText=menu.runOniWinTooltip, icon=img.oni, onAction=[oniWin]) 17 - Action(name=openEditionFolder, text=menu.openEditionFolder, toolTipText=menu.openEditionFolderTooltip, icon=img.folder, onAction=[openEditionFolder]) 17 18 - Action(name=loadConfig, text=menu.loadConfig, toolTipText=menu.loadConfigTooltip, icon=img.openFile, onAction=[loadConfig]) 18 19 - Action(name=saveConfig, text=menu.saveConfig, toolTipText=menu.saveConfigTooltip, icon=img.saveFile, onAction=[saveConfig]) … … 27 28 - JMenuItem(action=runOniFull) 28 29 - JMenuItem(action=runOniWin) 30 - JSeparator() 31 - JMenuItem(action=openEditionFolder) 29 32 - JSeparator() 30 33 - JMenuItem(action=loadConfig) -
AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java
r602 r608 29 29 return false; 30 30 31 if (!mod. validOnPlatform())31 if (!mod.isValidOnPlatform()) 32 32 return false; 33 33 -
AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableModel.java
r606 r608 121 121 public void reloadData() { 122 122 items.clear(); 123 items.addAll(ModManager.getInstance().getMods ());123 items.addAll(ModManager.getInstance().getModsValidAndNotMandatory()); 124 124 revertSelection(); 125 125 } -
AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.java
r593 r608 7 7 8 8 import javax.swing.AbstractAction; 9 import javax.swing.JCheckBox; 9 10 import javax.swing.JComboBox; 10 11 import javax.swing.JComponent; … … 33 34 private LaFComboModel laFModel; 34 35 36 private JCheckBox chkNotifyOnStart; 37 35 38 /** 36 39 * Open the settings 37 40 */ 38 41 public SettingsDialog() { 39 setMinimumSize(new Dimension( 500, (int) getSize().getHeight() + 0));42 setMinimumSize(new Dimension(320, (int) getSize().getHeight() + 0)); 40 43 41 44 AbstractAction closeAction = new AbstractAction() { … … 62 65 laFModel = new LaFComboModel(); 63 66 cmbLaF.setModel(laFModel); 67 68 chkNotifyOnStart.setSelected(set.get("notifyupdates", true)); 64 69 } 65 70 … … 68 73 Settings set = Settings.getInstance(); 69 74 70 String oldLaf = set.get("lookandfeel", 71 UIManager.getLookAndFeel().getClass().getName()); 75 set.get("notifyupdates", chkNotifyOnStart.isSelected()); 76 77 String oldLaf = set.get("lookandfeel", UIManager.getLookAndFeel() 78 .getClass().getName()); 72 79 String newLaf = laFModel.getSelectedClassName(); 73 80 -
AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.properties
r591 r608 6 6 lblLaF=GUI theme: 7 7 8 panSetupDefaults=Default values for the installations 9 lblCreateDesktop=Link auf Desktop erstellen: 10 lblDesktopFolder=Desktop-Ordner: 11 txtDesktopFolder=Relativ zum Desktop-Ordner. Z.B. "." um die Verknüpfungen direkt auf dem Desktop abzulegen, "Spiele" um die Verknüpfungen in einen Unterordner Spiele auf dem Desktop zu legen. 12 lblUnattended=<html>Schnelles Setup (obige<br>Einstellungen nicht im Setup änderbar):</html> 13 8 panCommon=Common settings 9 lblNotifyOnStart=Notify about updates on startup: 14 10 15 11 newLaF.text=A new GUI theme was selected.\nPlease restart the application in order to apply the changes. -
AE/installer2/src/net/oni2/aeinstaller/gui/settings/SettingsDialog.yml
r593 r608 10 10 - JButton(name=btnOk, text=btnOk, onAction=[save,dispose]) 11 11 - JButton(name=btnCancel, text=btnCancel, onAction=[dispose]) 12 - JPanel(name=panSetupDefaults, groupTitle=panSetupDefaults): 13 - JLabel(name=lblCreateDesktop, text=lblCreateDesktop) 14 - JCheckBox(name=chkCreateDesktop) 15 - JLabel(name=lblDesktopFolder, text=lblDesktopFolder) 16 - JTextField(name=txtDesktopFolder, toolTipText=txtDesktopFolder) 12 - JPanel(name=panCommon, groupTitle=panCommon): 13 - JLabel(name=lblNotifyOnStart, text=lblNotifyOnStart) 14 - JCheckBox(name=chkNotifyOnStart) 17 15 - MigLayout: | 18 16 [min] [grow] 19 >lblCreateDesktop chkCreateDesktop [pref] 20 >lblDesktopFolder txtDesktopFolder [pref] 17 >lblNotifyOnStart chkNotifyOnStart [pref] 21 18 - JPanel(name=panUI, groupTitle=panUI): 22 19 - JLabel(name=lblLaF, text=lblLaF) … … 27 24 - MigLayout: | 28 25 [grow] 29 pan SetupDefaults[pref]26 panCommon [pref] 30 27 panUI [pref] 31 28 >btnOk+*=1,btnCancel=1 [min]
Note:
See TracChangeset
for help on using the changeset viewer.