source: java/installer2/src/net/oni2/aeinstaller/gui/toolmanager/ToolManager.java@ 730

Last change on this file since 730 was 720, checked in by alloc, 12 years ago

AEI2: Looooots of refactorings for breaking out independent features into libraries

File size: 4.7 KB
Line 
1package net.oni2.aeinstaller.gui.toolmanager;
2
3import java.awt.event.ActionEvent;
4import java.awt.event.KeyEvent;
5import java.util.ResourceBundle;
6import java.util.TreeSet;
7
8import javax.swing.AbstractAction;
9import javax.swing.Icon;
10import javax.swing.ImageIcon;
11import javax.swing.JButton;
12import javax.swing.JComponent;
13import javax.swing.JDialog;
14import javax.swing.JOptionPane;
15import javax.swing.JScrollPane;
16import javax.swing.JSplitPane;
17import javax.swing.KeyStroke;
18
19import net.oni2.SettingsManager;
20import net.oni2.aeinstaller.backend.oni.Installer;
21import net.oni2.aeinstaller.backend.packages.Package;
22import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
23import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
24import net.oni2.aeinstaller.gui.modtable.ModTable;
25import net.oni2.aeinstaller.gui.modtable.ModTable.ETableContentType;
26import net.oni2.aeinstaller.gui.packageinfobox.PackageInfoBox;
27
28import org.javabuilders.BuildResult;
29import org.javabuilders.swing.SwingJavaBuilder;
30
31/**
32 * @author Christian Illy
33 */
34public class ToolManager extends JDialog implements ModSelectionListener {
35 private static final long serialVersionUID = 343221630538866384L;
36
37 private ResourceBundle bundle = ResourceBundle
38 .getBundle("net.oni2.aeinstaller.localization."
39 + getClass().getSimpleName());
40 @SuppressWarnings("unused")
41 private BuildResult result = SwingJavaBuilder.build(this, bundle);
42
43 private JSplitPane contents;
44
45 private JScrollPane scrollTools;
46 private ModTable tblTools;
47
48 private PackageInfoBox pkgInfo;
49 private JButton btnInstall;
50
51 private Icon icoInstall = null;
52 private Icon icoUninstall = null;
53
54 private Package selectedPackage = null;
55
56 /**
57 * Open the dialog
58 */
59 public ToolManager() {
60 AbstractAction closeAction = new AbstractAction() {
61
62 private static final long serialVersionUID = 1L;
63
64 public void actionPerformed(ActionEvent arg0) {
65 dispose();
66 }
67 };
68 KeyStroke ksCtrlW = KeyStroke
69 .getKeyStroke('W', KeyEvent.CTRL_DOWN_MASK);
70 getRootPane()
71 .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
72 .put(ksCtrlW, "close");
73 getRootPane().getActionMap().put("close", closeAction);
74
75 contents.setDividerLocation(SettingsManager.getInstance().get("win_tools_divloc", 550));
76 contents.setResizeWeight(0.4);
77
78 tblTools = new ModTable(ETableContentType.TOOLS);
79 tblTools.reloadData();
80 scrollTools.setViewportView(tblTools);
81
82 tblTools.addModSelectionListener(this);
83
84 icoInstall = new ImageIcon(getClass().getResource(
85 SwingJavaBuilder.getConfig().getResource("img.install")));
86 icoUninstall = new ImageIcon(getClass().getResource(
87 SwingJavaBuilder.getConfig().getResource("img.uninstall")));
88
89 setSize(SettingsManager.getInstance().get("win_tools_width", 950), SettingsManager.getInstance().get("win_tools_height", 600));
90 setLocationRelativeTo(null);
91 }
92
93 @SuppressWarnings("unused")
94 private void install() {
95 if (selectedPackage != null) {
96 if (selectedPackage.isInstalled()) {
97 TreeSet<Package> tools = new TreeSet<Package>();
98 tools.add(selectedPackage);
99 Installer.installTools(tools, true);
100 } else {
101 if (!selectedPackage.isLocalAvailable()) {
102 if (SettingsManager.getInstance().isOfflineMode()) {
103 JOptionPane.showMessageDialog(this,
104 bundle.getString("offlineMode.text"),
105 bundle.getString("offlineMode.title"),
106 JOptionPane.WARNING_MESSAGE);
107 return;
108 }
109
110 TreeSet<Package> toDownload = new TreeSet<Package>();
111 toDownload.add(selectedPackage);
112
113 Downloader dl = new Downloader(toDownload, null);
114 try {
115 dl.setVisible(true);
116 if (!dl.isFinished())
117 return;
118 } finally {
119 dl.dispose();
120 }
121 }
122
123 TreeSet<Package> tools = new TreeSet<Package>();
124 tools.add(selectedPackage);
125 Installer.installTools(tools, false);
126 }
127 }
128 modSelectionChanged(tblTools, selectedPackage);
129 }
130
131 @Override
132 public void modSelectionChanged(ModTable source, Package mod) {
133 selectedPackage = mod;
134
135 pkgInfo.updateInfo(mod);
136 if (mod != null) {
137 btnInstall.setEnabled(true);
138 if (mod.isInstalled()) {
139 btnInstall.setText(bundle.getString("btnInstall.un.text"));
140 btnInstall.setToolTipText(bundle
141 .getString("btnInstall.un.tooltip"));
142 btnInstall.setIcon(icoUninstall);
143 } else {
144 btnInstall.setText(bundle.getString("btnInstall.text"));
145 btnInstall.setToolTipText(bundle
146 .getString("btnInstall.tooltip"));
147 btnInstall.setIcon(icoInstall);
148 }
149 }
150 }
151
152 @SuppressWarnings("unused")
153 private void closing() {
154 SettingsManager.getInstance().put("win_tools_divloc", contents.getDividerLocation());
155 SettingsManager.getInstance().put("win_tools_width", getWidth());
156 SettingsManager.getInstance().put("win_tools_height", getHeight());
157 }
158}
Note: See TracBrowser for help on using the repository browser.