📄 installpanel.java
字号:
/* * InstallPanel.java - For installing plugins * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2002 Kris Kopicki * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */package org.gjt.sp.jedit.pluginmgr;//{{{ Importsimport javax.swing.border.*;import javax.swing.event.*;import javax.swing.table.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.text.NumberFormat;import java.util.*;import org.gjt.sp.jedit.gui.*;import org.gjt.sp.jedit.io.VFSManager;import org.gjt.sp.jedit.*;import org.gjt.sp.util.Log;//}}}class InstallPanel extends JPanel{ //{{{ InstallPanel constructor InstallPanel(PluginManager window, boolean updates) { super(new BorderLayout(12,12)); this.window = window; this.updates = updates; setBorder(new EmptyBorder(12,12,12,12)); JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true); /* Setup the table */ table = new JTable(pluginModel = new PluginTableModel()); table.setShowGrid(false); table.setIntercellSpacing(new Dimension(0,0)); table.setRowHeight(table.getRowHeight() + 2); table.setPreferredScrollableViewportSize(new Dimension(500,200)); table.setRequestFocusEnabled(false); table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setDefaultRenderer(Object.class, new TextRenderer( (DefaultTableCellRenderer)table.getDefaultRenderer(Object.class))); TableColumn col1 = table.getColumnModel().getColumn(0); TableColumn col2 = table.getColumnModel().getColumn(1); TableColumn col3 = table.getColumnModel().getColumn(2); TableColumn col4 = table.getColumnModel().getColumn(3); TableColumn col5 = table.getColumnModel().getColumn(4); col1.setPreferredWidth(30); col1.setMinWidth(30); col1.setMaxWidth(30); col1.setResizable(false); col2.setPreferredWidth(180); col3.setPreferredWidth(130); col4.setPreferredWidth(70); col5.setPreferredWidth(70); JTableHeader header = table.getTableHeader(); header.setReorderingAllowed(false); header.addMouseListener(new HeaderMouseHandler()); JScrollPane scrollpane = new JScrollPane(table); scrollpane.getViewport().setBackground(table.getBackground()); split.setTopComponent(scrollpane); /* Create description */ JScrollPane infoPane = new JScrollPane(new PluginInfoBox()); infoPane.setPreferredSize(new Dimension(500,100)); split.setBottomComponent(infoPane); split.setDividerLocation(200); add(BorderLayout.CENTER,split); /* Create buttons */ Box buttons = new Box(BoxLayout.X_AXIS); buttons.add(new InstallButton()); buttons.add(Box.createHorizontalStrut(12)); buttons.add(new SelectallButton()); buttons.add(Box.createGlue()); buttons.add(new SizeLabel()); add(BorderLayout.SOUTH,buttons); } //}}} //{{{ updateModel() method public void updateModel() { pluginModel.showLoadingMessage(); VFSManager.runInAWTThread(new Runnable() { public void run() { pluginModel.update(); } }); } //}}} //{{{ Private members //{{{ Variables private JTable table; private PluginTableModel pluginModel; private PluginManager window; private boolean updates; //}}} //{{{ formatSize() method private String formatSize(int size) { NumberFormat df = NumberFormat.getInstance(); df.setMaximumFractionDigits(1); df.setMinimumFractionDigits(0); String sizeText; if (size < 1048576) sizeText = size/1024 + "KB"; else sizeText = df.format(size/1048576d) + "MB"; return sizeText; } //}}} //}}} //{{{ Inner classes //{{{ PluginTableModel class class PluginTableModel extends AbstractTableModel { private ArrayList entries = new ArrayList(); private int sortType = EntryCompare.CATEGORY; //{{{ getColumnClass() method public Class getColumnClass(int columnIndex) { switch (columnIndex) { case 0: return Boolean.class; case 1: case 2: case 3: case 4: return Object.class; default: throw new Error("Column out of range"); } } //}}} //{{{ getColumnCount() method public int getColumnCount() { return 5; } //}}} //{{{ getColumnName() method public String getColumnName(int column) { switch (column) { case 0: return " "; case 1: return " "+jEdit.getProperty("install-plugins.info.name"); case 2: return " "+jEdit.getProperty("install-plugins.info.category"); case 3: return " "+jEdit.getProperty("install-plugins.info.version"); case 4: return " "+jEdit.getProperty("install-plugins.info.size"); default: throw new Error("Column out of range"); } } //}}} //{{{ getRowCount() method public int getRowCount() { return entries.size(); } //}}} //{{{ getValueAt() method public Object getValueAt(int rowIndex,int columnIndex) { Object obj = entries.get(rowIndex); if(obj instanceof String) { if(columnIndex == 1) return obj; else return null; } else { Entry entry = (Entry)obj; switch (columnIndex) { case 0: return new Boolean( entry.install); case 1: return entry.name; case 2: return entry.set; case 3: return entry.version; case 4: return formatSize(entry.size); default: throw new Error("Column out of range"); } } } //}}} //{{{ isCellEditable() method public boolean isCellEditable(int rowIndex, int columnIndex) { return (columnIndex == 0); } //}}} //{{{ setSelectAll() method public void setSelectAll(boolean b) { if(isDownloadingList()) return; int length = getRowCount(); for (int i = 0; i < length; i++) { if (b) setValueAt(new Boolean(true),i,0); else { Entry entry = (Entry)entries.get(i); entry.parents = new LinkedList(); entry.install = false; } } fireTableChanged(new TableModelEvent(this)); } //}}} //{{{ setSortType() method public void setSortType(int type) { sortType = type; sort(type); } //}}} //{{{ setValueAt() method public void setValueAt(Object aValue, int row, int column) { if (column != 0) return; Object obj = entries.get(row); if(obj instanceof String) return; Entry entry = (Entry)obj; Vector deps = entry.plugin.getCompatibleBranch().deps; boolean value = ((Boolean)aValue).booleanValue(); if (!value) { if (entry.parents.size() > 0) { String[] args = { entry.name, entry.getParentString() }; int result = GUIUtilities.confirm( window,"plugin-manager.dependency", args,JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (result != JOptionPane.OK_OPTION) return; Iterator parentsIter = entry.parents.iterator(); while(parentsIter.hasNext()) { ((Entry)parentsIter.next()).install = false; } fireTableRowsUpdated(0,getRowCount() - 1); } } for (int i = 0; i < deps.size(); i++) { PluginList.Dependency dep = (PluginList.Dependency)deps.elementAt(i); if (dep.what.equals("plugin")) { for (int j = 0; j < entries.size(); j++) { Entry temp = (Entry)entries.get(j); if (temp.plugin == dep.plugin) { if (value) { temp.parents.add(entry); setValueAt(new Boolean(true),j,0); } else temp.parents.remove(entry); } } } } entry.install = Boolean.TRUE.equals(aValue); fireTableCellUpdated(row,column); } //}}} //{{{ sort() method public void sort(int type) { if(isDownloadingList()) return; Collections.sort(entries,new EntryCompare(type)); fireTableChanged(new TableModelEvent(this)); } //}}} //{{{ isDownloadingList() method private boolean isDownloadingList() { return (entries.size() == 1 && entries.get(0) instanceof String); } //}}} //{{{ showLoadingMessage() method
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -