📄 managepanel.java
字号:
jEdit.getSettingsDirectory(),"jars"); } PluginJAR[] plugins = jEdit.getPluginJARs(); for(int i = 0; i < plugins.length; i++) { String path = plugins[i].getPath(); if(path.startsWith(systemJarDir) || (userJarDir != null && path.startsWith(userJarDir))) { Entry e = new Entry(plugins[i]); if(!hideLibraries.isSelected() || e.clazz != null) { entries.add(e); } } } String[] newPlugins = jEdit.getNotLoadedPluginJARs(); for(int i = 0; i < newPlugins.length; i++) { Entry e = new Entry(newPlugins[i]); if(!hideLibraries.isSelected() || e.clazz != null) { entries.add(e); } } sort(sortType); } //}}} //{{{ loadExtraJARsIfNecessary() method /** * This should go into the core... */ private void loadPluginJAR(String jarPath) { jEdit.addPluginJAR(jarPath); PluginJAR jar = jEdit.getPluginJAR(jarPath); if(jar == null || jar.getPlugin() == null) return; String jars = jEdit.getProperty("plugin." + jar.getPlugin().getClassName() + ".jars"); if(jars != null) { String dir = MiscUtilities.getParentOfPath( jarPath); StringTokenizer st = new StringTokenizer(jars); while(st.hasMoreTokens()) { String _jarPath = MiscUtilities.constructPath( dir,st.nextToken()); PluginJAR _jar = jEdit.getPluginJAR( _jarPath); if(_jar == null) { jEdit.addPluginJAR(_jarPath); } } } jar.checkDependencies(); jar.activatePluginIfNecessary(); } //}}} //{{{ unloadPluginJARWithDialog() method private void unloadPluginJARWithDialog(PluginJAR jar) { String[] dependents = jar.getDependentPlugins(); if(dependents.length == 0) unloadPluginJAR(jar); else { Vector listModel = new Vector(); transitiveClosure(dependents,listModel); int button = showListConfirm( "plugin-manager.dependency", new String[] { jar.getFile() .getName() },listModel); if(button == JOptionPane.YES_OPTION) unloadPluginJAR(jar); } } //}}} //{{{ transitiveClosure() method /** * If plugin A is needed by B, and B is needed by C, we want to * tell the user that A is needed by B and C when they try to * unload A. */ private void transitiveClosure(String[] dependents, Vector listModel) { for(int i = 0; i < dependents.length; i++) { String jarPath = dependents[i]; if(!listModel.contains(jarPath)) { listModel.add(jarPath); PluginJAR jar = jEdit.getPluginJAR( jarPath); transitiveClosure(jar.getDependentPlugins(), listModel); } } } //}}} //{{{ unloadPluginJAR() method /** * This should go into a public method somewhere. */ private void unloadPluginJAR(PluginJAR jar) { String[] dependents = jar.getDependentPlugins(); for(int i = 0; i < dependents.length; i++) { PluginJAR _jar = jEdit.getPluginJAR( dependents[i]); if(_jar != null) { unloadPluginJAR(_jar); } } jEdit.removePluginJAR(jar,false); } //}}} } //}}} //{{{ TextRenderer class class TextRenderer extends DefaultTableCellRenderer { private DefaultTableCellRenderer tcr; public TextRenderer(DefaultTableCellRenderer tcr) { this.tcr = tcr; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Entry entry = pluginModel.getEntry(row); if (entry.status.equals(Entry.ERROR)) tcr.setForeground(Color.red); else tcr.setForeground(UIManager.getColor("Table.foreground")); return tcr.getTableCellRendererComponent(table,value,isSelected,false,row,column); } } //}}} //{{{ HideLibrariesButton class class HideLibrariesButton extends JCheckBox implements ActionListener { HideLibrariesButton() { super(jEdit.getProperty("plugin-manager.hide-libraries")); setSelected(jEdit.getBooleanProperty( "plugin-manager.hide-libraries.toggle")); addActionListener(this); } public void actionPerformed(ActionEvent evt) { jEdit.setBooleanProperty( "plugin-manager.hide-libraries.toggle", isSelected()); ManagePanel.this.update(); } } //}}} //{{{ RemoveButton class class RemoveButton extends JButton implements ListSelectionListener, ActionListener { public RemoveButton() { super(jEdit.getProperty("manage-plugins.remove")); table.getSelectionModel().addListSelectionListener(this); addActionListener(this); setEnabled(false); } public void actionPerformed(ActionEvent evt) { int[] selected = table.getSelectedRows(); Vector listModel = new Vector(); Roster roster = new Roster(); for(int i = 0; i < selected.length; i++) { Entry entry = pluginModel.getEntry(selected[i]); Iterator iter = entry.jars.iterator(); while(iter.hasNext()) { String jar = (String)iter.next(); listModel.addElement(jar); roster.addRemove(jar); } } int button = showListConfirm( "plugin-manager.remove-confirm", null,listModel); if(button == JOptionPane.YES_OPTION) { roster.performOperationsInAWTThread(window); pluginModel.update(); } } public void valueChanged(ListSelectionEvent e) { if (table.getSelectedRowCount() == 0) setEnabled(false); else setEnabled(true); } } //}}} //{{{ HelpButton class class HelpButton extends JButton implements ListSelectionListener, ActionListener { private URL docURL; public HelpButton() { super(jEdit.getProperty("manage-plugins.help")); table.getSelectionModel().addListSelectionListener(this); addActionListener(this); setEnabled(false); } public void actionPerformed(ActionEvent evt) { new HelpViewer(docURL); } public void valueChanged(ListSelectionEvent e) { if (table.getSelectedRowCount() == 1) { try { Entry entry = pluginModel.getEntry(table.getSelectedRow()); String label = entry.clazz; String docs = entry.docs; PluginJAR jar = jEdit.getPlugin(label) .getPluginJAR(); if(jar != null && label != null && docs != null) { URL url = jar.getClassLoader() .getResource(docs); if(url != null) { docURL = url; setEnabled(true); return; } } } catch (Exception ex) {} } setEnabled(false); } } //}}} //{{{ EntryCompare class static class EntryCompare implements Comparator { public static final int NAME = 1; public static final int STATUS = 2; private int type; public EntryCompare(int type) { this.type = type; } public int compare(Object o1, Object o2) { Entry e1 = (Entry)o1; Entry e2 = (Entry)o2; if (type == NAME) return compareNames(e1,e2); else { int result; if ((result = e1.status.compareToIgnoreCase(e2.status)) == 0) return compareNames(e1,e2); return result; } } private int compareNames(Entry e1, Entry e2) { String s1, s2; if(e1.name == null) s1 = MiscUtilities.getFileName(e1.jar); else s1 = e1.name; if(e2.name == null) s2 = MiscUtilities.getFileName(e2.jar); else s2 = e2.name; return s1.compareToIgnoreCase(s2); } } //}}} //{{{ HeaderMouseHandler class class HeaderMouseHandler extends MouseAdapter { public void mouseClicked(MouseEvent evt) { switch(table.getTableHeader().columnAtPoint(evt.getPoint())) { case 1: pluginModel.setSortType(EntryCompare.NAME); break; case 3: pluginModel.setSortType(EntryCompare.STATUS); break; default: break; } } } //}}} //}}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -