PageRenderTime 53ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/jEdit/tags/jedit-4-3-pre5/org/gjt/sp/jedit/options/PluginManagerOptionPane.java

#
Java | 291 lines | 206 code | 43 blank | 42 comment | 22 complexity | 4e0bfe87dff5caf4ed7ab324955dee3d MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. /*
  2. * PluginManagerOptionPane.java - Plugin options panel
  3. * :tabSize=8:indentSize=8:noTabs=false:
  4. * :folding=explicit:collapseFolds=1:
  5. *
  6. * Copyright (C) 2003 Kris Kopicki
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License
  10. * as published by the Free Software Foundation; either version 2
  11. * of the License, or any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  21. */
  22. package org.gjt.sp.jedit.options;
  23. import javax.swing.*;
  24. import javax.swing.border.*;
  25. import java.awt.*;
  26. import java.awt.event.*;
  27. import java.util.*;
  28. import org.gjt.sp.jedit.*;
  29. import org.gjt.sp.jedit.io.VFSManager;
  30. import org.gjt.sp.jedit.pluginmgr.*;
  31. import org.gjt.sp.util.*;
  32. /**
  33. * @version $Id: PluginManagerOptionPane.java 5236 2005-07-27 21:54:36Z kpouer $
  34. */
  35. public class PluginManagerOptionPane extends AbstractOptionPane
  36. {
  37. //{{{ Constructor
  38. public PluginManagerOptionPane()
  39. {
  40. super("plugin-manager");
  41. } //}}}
  42. //{{{ _init() method
  43. protected void _init()
  44. {
  45. setLayout(new BorderLayout());
  46. locationLabel = new JLabel(jEdit.getProperty(
  47. "options.plugin-manager.location"));
  48. mirrorLabel = new JLabel();
  49. updateMirrorLabel();
  50. if(jEdit.getSettingsDirectory() != null)
  51. {
  52. settingsDir = new JRadioButton(jEdit.getProperty(
  53. "options.plugin-manager.settings-dir"));
  54. settingsDir.setToolTipText(MiscUtilities.constructPath(
  55. jEdit.getSettingsDirectory(),"jars"));
  56. }
  57. appDir = new JRadioButton(jEdit.getProperty(
  58. "options.plugin-manager.app-dir"));
  59. appDir.setToolTipText(MiscUtilities.constructPath(
  60. jEdit.getJEditHome(),"jars"));
  61. miraList = new JList(miraModel = new MirrorModel());
  62. miraList.setSelectionModel(new SingleSelectionModel());
  63. /* Download mirror */
  64. add(BorderLayout.NORTH,mirrorLabel);
  65. add(BorderLayout.CENTER,new JScrollPane(miraList));
  66. JPanel buttonPanel = new JPanel();
  67. buttonPanel.setLayout(new BoxLayout(buttonPanel,BoxLayout.Y_AXIS));
  68. buttonPanel.add(Box.createVerticalStrut(6));
  69. /* Update mirror list */
  70. JButton updateMirrors = new JButton(jEdit.getProperty(
  71. "options.plugin-manager.updateMirrors"));
  72. updateMirrors.addActionListener(new ActionHandler());
  73. buttonPanel.add(updateMirrors);
  74. buttonPanel.add(Box.createVerticalStrut(6));
  75. /* Download source */
  76. downloadSource = new JCheckBox(jEdit.getProperty(
  77. "options.plugin-manager.downloadSource"));
  78. downloadSource.setSelected(jEdit.getBooleanProperty("plugin-manager.downloadSource"));
  79. buttonPanel.add(downloadSource);
  80. buttonPanel.add(Box.createVerticalStrut(6));
  81. /* Delete downloaded files */
  82. deleteDownloads = new JCheckBox(jEdit.getProperty(
  83. "options.plugin-manager.deleteDownloads"));
  84. deleteDownloads.setSelected(jEdit.getBooleanProperty("plugin-manager.deleteDownloads"));
  85. buttonPanel.add(deleteDownloads);
  86. buttonPanel.add(Box.createVerticalStrut(6));
  87. /* Install location */
  88. locGrp = new ButtonGroup();
  89. if(jEdit.getSettingsDirectory() != null)
  90. locGrp.add(settingsDir);
  91. locGrp.add(appDir);
  92. JPanel locPanel = new JPanel();
  93. locPanel.setBorder(new EmptyBorder(3,12,0,0));
  94. locPanel.setLayout(new BoxLayout(locPanel,BoxLayout.Y_AXIS));
  95. if(jEdit.getSettingsDirectory() != null)
  96. {
  97. locPanel.add(settingsDir);
  98. locPanel.add(Box.createVerticalStrut(3));
  99. }
  100. locPanel.add(appDir);
  101. buttonPanel.add(locationLabel);
  102. buttonPanel.add(locPanel);
  103. buttonPanel.add(Box.createGlue());
  104. add(BorderLayout.SOUTH,buttonPanel);
  105. if (jEdit.getBooleanProperty("plugin-manager.installUser")
  106. && jEdit.getSettingsDirectory() != null)
  107. settingsDir.setSelected(true);
  108. else
  109. appDir.setSelected(true);
  110. } //}}}
  111. //{{{ _save() method
  112. protected void _save()
  113. {
  114. jEdit.setBooleanProperty("plugin-manager.installUser",
  115. settingsDir != null && settingsDir.isSelected());
  116. jEdit.setBooleanProperty("plugin-manager.downloadSource",downloadSource.isSelected());
  117. jEdit.setBooleanProperty("plugin-manager.deleteDownloads",deleteDownloads.isSelected());
  118. if(miraList.getSelectedIndex() != -1)
  119. {
  120. String currentMirror = miraModel.getID(miraList.getSelectedIndex());
  121. String previousMirror = jEdit.getProperty("plugin-manager.mirror.id");
  122. if (!previousMirror.equals(currentMirror))
  123. {
  124. jEdit.setProperty("plugin-manager.mirror.id",currentMirror);
  125. jEdit.setProperty("plugin-manager.mirror.name",(String) miraModel.getElementAt(miraList.getSelectedIndex()));
  126. updateMirrorLabel();
  127. // Insert code to update the plugin managers list here later
  128. }
  129. }
  130. } //}}}
  131. //{{{ Private members
  132. //{{{ Instance variables
  133. private JLabel locationLabel;
  134. private JLabel mirrorLabel;
  135. private ButtonGroup locGrp;
  136. private JRadioButton settingsDir;
  137. private JRadioButton appDir;
  138. private JCheckBox downloadSource;
  139. private JCheckBox deleteDownloads;
  140. private MirrorModel miraModel;
  141. private JList miraList;
  142. //}}}
  143. //{{{ updateMirrorLabel method
  144. private void updateMirrorLabel()
  145. {
  146. String currentMirror = jEdit.getProperty("plugin-manager.mirror.id");
  147. String mirrorName;
  148. if (currentMirror.equals(MirrorList.Mirror.NONE))
  149. {
  150. mirrorName = "Plugin Central default";
  151. }
  152. else
  153. {
  154. mirrorName = jEdit.getProperty("plugin-manager.mirror.name");
  155. if (mirrorName == null) mirrorName = currentMirror;
  156. }
  157. mirrorLabel.setText(jEdit.getProperty(
  158. "options.plugin-manager.mirror") + ' ' + mirrorName);
  159. } //}}}
  160. //}}}
  161. //{{{ MirrorModel class
  162. class MirrorModel extends AbstractListModel
  163. {
  164. private ArrayList mirrors;
  165. public MirrorModel()
  166. {
  167. mirrors = new ArrayList();
  168. }
  169. public String getID(int index)
  170. {
  171. return ((MirrorList.Mirror)mirrors.get(index)).id;
  172. }
  173. public int getSize()
  174. {
  175. return mirrors.size();
  176. }
  177. public Object getElementAt(int index)
  178. {
  179. MirrorList.Mirror mirror = (MirrorList.Mirror)mirrors.get(index);
  180. if(mirror.id.equals(MirrorList.Mirror.NONE))
  181. return jEdit.getProperty("options.plugin-manager.none");
  182. else
  183. return mirror.continent+": "+mirror.description+" ("+mirror.location+")";
  184. }
  185. public void setList(ArrayList mirrors)
  186. {
  187. this.mirrors = mirrors;
  188. fireContentsChanged(this,0,mirrors.size() - 1);
  189. }
  190. } //}}}
  191. //{{{ SingleSelectionModel class
  192. class SingleSelectionModel extends DefaultListSelectionModel
  193. {
  194. public SingleSelectionModel()
  195. {
  196. super();
  197. setSelectionMode(SINGLE_SELECTION);
  198. }
  199. public void removeSelectionInterval(int index0, int index1) {}
  200. } //}}}
  201. //{{{ ActionHandler class
  202. class ActionHandler implements ActionListener
  203. {
  204. public void actionPerformed(ActionEvent evt)
  205. {
  206. VFSManager.runInWorkThread(new DownloadMirrorsThread());
  207. }
  208. } //}}}
  209. //{{{ DownloadMirrorsThread class
  210. class DownloadMirrorsThread extends WorkRequest
  211. {
  212. public void run()
  213. {
  214. setStatus(jEdit.getProperty("options.plugin-manager.workthread"));
  215. setMaximum(1);
  216. setValue(0);
  217. final ArrayList mirrors = new ArrayList();
  218. try
  219. {
  220. mirrors.addAll(new MirrorList().mirrors);
  221. }
  222. catch (Exception ex)
  223. {
  224. Log.log(Log.ERROR,this,ex);
  225. GUIUtilities.error(PluginManagerOptionPane.this,
  226. "ioerror",new String[] { ex.toString() });
  227. }
  228. SwingUtilities.invokeLater(new Runnable()
  229. {
  230. public void run()
  231. {
  232. miraModel.setList(mirrors);
  233. String id = jEdit.getProperty("plugin-manager.mirror.id");
  234. int size = miraModel.getSize();
  235. for (int i=0; i < size; i++)
  236. {
  237. if (size == 1 || miraModel.getID(i).equals(id))
  238. {
  239. miraList.setSelectedIndex(i);
  240. break;
  241. }
  242. }
  243. }
  244. });
  245. setValue(1);
  246. }
  247. } //}}}
  248. }