⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metalfilechooserui.java

📁 java jdk 1.4的源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	cancelButton.addActionListener(getCancelSelectionAction());	getButtonPanel().add(cancelButton);	if(fc.getControlButtonsAreShown()) {	    addControlButtons();	}	groupLabels(new AlignedLabel[] { fileNameLabel, filesOfTypeLabel });    }    protected JPanel getButtonPanel() {	if (buttonPanel == null) {	    buttonPanel = new JPanel();	}	return buttonPanel;    }    protected JPanel getBottomPanel() {	if(bottomPanel == null) {	    bottomPanel = new JPanel();	}	return bottomPanel;    }    protected void installStrings(JFileChooser fc) {	super.installStrings(fc);        Locale l = fc.getLocale();	lookInLabelMnemonic = UIManager.getInt("FileChooser.lookInLabelMnemonic"); 	lookInLabelText = UIManager.getString("FileChooser.lookInLabelText",l);	saveInLabelText = UIManager.getString("FileChooser.saveInLabelText",l);		fileNameLabelMnemonic = UIManager.getInt("FileChooser.fileNameLabelMnemonic");  	fileNameLabelText = UIManager.getString("FileChooser.fileNameLabelText",l); 		filesOfTypeLabelMnemonic = UIManager.getInt("FileChooser.filesOfTypeLabelMnemonic");  	filesOfTypeLabelText = UIManager.getString("FileChooser.filesOfTypeLabelText",l); 		upFolderToolTipText =  UIManager.getString("FileChooser.upFolderToolTipText",l);	upFolderAccessibleName = UIManager.getString("FileChooser.upFolderAccessibleName",l); 		homeFolderToolTipText =  UIManager.getString("FileChooser.homeFolderToolTipText",l);	homeFolderAccessibleName = UIManager.getString("FileChooser.homeFolderAccessibleName",l); 		newFolderToolTipText = UIManager.getString("FileChooser.newFolderToolTipText",l);	newFolderAccessibleName = UIManager.getString("FileChooser.newFolderAccessibleName",l); 		listViewButtonToolTipText = UIManager.getString("FileChooser.listViewButtonToolTipText",l); 	listViewButtonAccessibleName = UIManager.getString("FileChooser.listViewButtonAccessibleName",l); 		detailsViewButtonToolTipText = UIManager.getString("FileChooser.detailsViewButtonToolTipText",l); 	detailsViewButtonAccessibleName = UIManager.getString("FileChooser.detailsViewButtonAccessibleName",l); 	fileNameHeaderText = UIManager.getString("FileChooser.fileNameHeaderText",l);	fileSizeHeaderText = UIManager.getString("FileChooser.fileSizeHeaderText",l);	fileTypeHeaderText = UIManager.getString("FileChooser.fileTypeHeaderText",l);	fileDateHeaderText = UIManager.getString("FileChooser.fileDateHeaderText",l);	fileAttrHeaderText = UIManager.getString("FileChooser.fileAttrHeaderText",l);    }    protected void installListeners(JFileChooser fc) {	super.installListeners(fc);        ActionMap actionMap = getActionMap();        SwingUtilities.replaceUIActionMap(fc, actionMap);    }    protected ActionMap getActionMap() {        return createActionMap();    }    protected ActionMap createActionMap() {        AbstractAction escAction = new AbstractAction() {            public void actionPerformed(ActionEvent e) {		if (editFile != null) {		    cancelEdit();		} else {		    getFileChooser().cancelSelection();		}            }            public boolean isEnabled(){                return getFileChooser().isEnabled();            }        };        ActionMap map = new ActionMapUIResource();        map.put("approveSelection", getApproveSelectionAction());        map.put("cancelSelection", escAction);        map.put("Go Up", getChangeToParentDirectoryAction());        return map;    }    protected JPanel createList(JFileChooser fc) {	JPanel p = new JPanel(new BorderLayout());	final JFileChooser fileChooser = fc;	list = new JList() {	    public int getNextMatch(String prefix, int startIndex, Position.Bias bias) {		ListModel model = getModel();		int max = model.getSize();		if (prefix == null || startIndex < 0 || startIndex >= max) {		    throw new IllegalArgumentException();		}		// start search from the next element before/after the selected element		boolean backwards = (bias == Position.Bias.Backward);		for (int i = startIndex; backwards ? i >= 0 : i < max; i += (backwards ?  -1 : 1)) {		    String filename = fileChooser.getName((File)model.getElementAt(i));		    if (filename.regionMatches(true, 0, prefix, 0, prefix.length())) {			return i;		    }		}		return -1;	    }	};	list.setCellRenderer(new FileRenderer());	list.setLayoutOrientation(JList.VERTICAL_WRAP);	list.setVisibleRowCount(-1);	if (fc.isMultiSelectionEnabled()) {	    list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);	} else {	    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);	}	list.setModel(getModel());	list.addListSelectionListener(createListSelectionListener(fc));	list.addMouseListener(createDoubleClickListener(fc, list));	list.addMouseListener(createSingleClickListener(fc, list));	getModel().addListDataListener(new ListDataListener() {	    public void contentsChanged(ListDataEvent e) {		// Update the selection after JList has been updated		new DelayedSelectionUpdater();	    }	    public void intervalAdded(ListDataEvent e) {		new DelayedSelectionUpdater();	    }	    public void intervalRemoved(ListDataEvent e) {	    }	});	JScrollPane scrollpane = new JScrollPane(list);	p.add(scrollpane, BorderLayout.CENTER);	return p;    }    class DetailsTableModel extends AbstractTableModel implements ListDataListener {	String[] columnNames = {	    fileNameHeaderText,	    fileSizeHeaderText,	    fileTypeHeaderText,	    fileDateHeaderText,	    fileAttrHeaderText	};	JFileChooser chooser;	ListModel listModel;	DetailsTableModel(JFileChooser fc) {	    this.chooser = fc;	    listModel = getModel();	    listModel.addListDataListener(this);	}	public int getRowCount() {	    return listModel.getSize();	}	public int getColumnCount() {	    return COLUMN_COLCOUNT;	}	public String getColumnName(int column) {	    return columnNames[column];	}	public Class getColumnClass(int column) {	    switch (column) {	      case COLUMN_FILENAME:		  return File.class;	      case COLUMN_FILEDATE:		  return Date.class;	      default:		  return super.getColumnClass(column);	    }	}	public Object getValueAt(int row, int col) {	    // Note: It is very important to avoid getting info on drives, as	    // this will trigger "No disk in A:" and similar dialogs.	    //	    // Use (f.exists() && !chooser.getFileSystemView().isFileSystemRoot(f)) to	    // determine if it is safe to call methods directly on f.	    File f = (File)listModel.getElementAt(row);	    switch (col) {	      case COLUMN_FILENAME:		  return f;	      case COLUMN_FILESIZE:		  if (!f.exists() || f.isDirectory()) {		      return null;		  }		  long len = f.length() / 1024L;		  if (len < 1024L) {		      return ((len == 0L) ? 1L : len) + " KB";		  } else {		      len /= 1024L;		      if (len < 1024L) {			  return len + " MB";		      } else {			  len /= 1024L;			  return len + " GB";		      }		  }	      case COLUMN_FILETYPE:		  if (!f.exists()) {		      return null;		  }		  return chooser.getFileSystemView().getSystemTypeDescription(f);	      case COLUMN_FILEDATE:		  if (!f.exists() || chooser.getFileSystemView().isFileSystemRoot(f)) {		      return null;		  }		  long time = f.lastModified();		  return (time == 0L) ? null : new Date(time);	      case COLUMN_FILEATTR:		  if (!f.exists() || chooser.getFileSystemView().isFileSystemRoot(f)) {		      return null;		  }		  String attributes = "";		  if (!f.canWrite()) {		      attributes += "R";		  }		  if (f.isHidden()) {		      attributes += "H";		  }		  return attributes;	    }	    return null;	}	public void setValueAt(Object value, int row, int col) {	    if (col == COLUMN_FILENAME) {		JFileChooser chooser = getFileChooser();		File f = (File)getValueAt(row, col);		if (f != null) {		    String oldDisplayName = chooser.getName(f);		    String oldFileName = f.getName();		    String newDisplayName = ((String)value).trim();		    String newFileName;		    if (!newDisplayName.equals(oldDisplayName)) {			newFileName = newDisplayName;			//Check if extension is hidden from user			int i1 = oldFileName.length();			int i2 = oldDisplayName.length();			if (i1 > i2 && oldFileName.charAt(i2) == '.') {			    newFileName = newDisplayName + oldFileName.substring(i2);			}			// rename			FileSystemView fsv = chooser.getFileSystemView();			File f2 = fsv.createFileObject(f.getParentFile(), newFileName);			if (!f2.exists() && MetalFileChooserUI.this.getModel().renameFile(f, f2)) {			    if (fsv.isParent(chooser.getCurrentDirectory(), f2)) {				if (chooser.isMultiSelectionEnabled()) {				    chooser.setSelectedFiles(new File[] { f2 });				} else {				    chooser.setSelectedFile(f2);				}			    } else {				//Could be because of delay in updating Desktop folder				//chooser.setSelectedFile(null);			    }			} else {			    // PENDING(jeff) - show a dialog indicating failure			}		    }		}	    }	}	public boolean isCellEditable(int row, int column) {	    return (column == COLUMN_FILENAME);	}	public void contentsChanged(ListDataEvent e) {	    fireTableDataChanged();	}	public void intervalAdded(ListDataEvent e) {	    fireTableDataChanged();	}	public void intervalRemoved(ListDataEvent e) {	    fireTableDataChanged();	}    }    class DetailsTableCellRenderer extends DefaultTableCellRenderer {	JFileChooser chooser;	DateFormat df;	DetailsTableCellRenderer(JFileChooser chooser) {	    this.chooser = chooser;	    df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT,						chooser.getLocale());	}	public Component getTableCellRendererComponent(JTable table, Object value,			      boolean isSelected, boolean hasFocus, int row, int column) {	    if (column == COLUMN_FILESIZE || column == COLUMN_FILEATTR) {		setHorizontalAlignment(SwingConstants.TRAILING);	    } else {		setHorizontalAlignment(SwingConstants.LEADING);	    }	    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);	}	public void setValue(Object value) { 	    setIcon(null);	    if (value instanceof File) {		File file = (File)value;		String fileName = chooser.getName(file);		setText(fileName);		Icon icon = chooser.getIcon(file);		setIcon(icon);	    } else if (value instanceof Date) {		setText((value == null) ? "" : df.format((Date)value));	    } else {		super.setValue(value);	    }	}    }    protected JPanel createDetailsView(JFileChooser fc) {	final JFileChooser chooser = fc;	JPanel p = new JPanel(new BorderLayout());	DetailsTableModel detailsTableModel = new DetailsTableModel(chooser);	detailsTable = new JTable(detailsTableModel) {	    // Handle Escape key events here	    protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {		if (e.getKeyCode() == KeyEvent.VK_ESCAPE && getCellEditor() == null) {		    // We are not editing, forward to filechooser.		    chooser.dispatchEvent(e);		    return true;		}		return super.processKeyBinding(ks, e, condition, pressed);	    }	};	detailsTable.setComponentOrientation(chooser.getComponentOrientation());	detailsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);	detailsTable.setShowGrid(false);	detailsTable.setSelectionModel(listSelectionModel); 	detailsTable.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);	Font font = detailsTable.getFont();	detailsTable.setRowHeight(Math.max(font.getSize(), 19)+3);	TableColumnModel columnModel = detailsTable.getColumnModel();	TableColumn[] columns = new TableColumn[COLUMN_COLCOUNT];	for (int i = 0; i < COLUMN_COLCOUNT; i++) {	    columns[i] = columnModel.getColumn(i);	    columns[i].setPreferredWidth(COLUMN_WIDTHS[i]);	}	if (!System.getProperty("os.name").startsWith("Windows")) {	    columnModel.removeColumn(columns[COLUMN_FILETYPE]);	    columnModel.removeColumn(columns[COLUMN_FILEATTR]);	}	TableCellRenderer cellRenderer = new DetailsTableCellRenderer(chooser);	detailsTable.setDefaultRenderer(File.class, cellRenderer);	detailsTable.setDefaultRenderer(Date.class, cellRenderer);	detailsTable.setDefaultRenderer(Object.class, cellRenderer);	// Install cell editor for editing file name	final JTextField tf = new JTextField();	tf.addFocusListener(editorFocusListener);	columns[COLUMN_FILENAME].setCellEditor(new DefaultCellEditor(tf) {	    public boolean isCellEditable(EventObject e) {		if (e instanceof MouseEvent) { 		    MouseEvent me = (MouseEvent)e;		    int index = detailsTable.rowAtPoint(me.getPoint());		    return (me.getClickCount() == 1 && detailsTable.isRowSelected(index));		}		return super.isCellEditable(e);	    }	    public Component getTableCellEditorComponent(JTable table, Object value,							 boolean isSelected, int row, int column) {		Component comp = super.getTableCellEditorComponent(table, value, isSelected, row, column);		if (value instanceof File) {		    tf.setText(chooser.getName((File)value));		    tf.requestFocus();		    tf.selectAll();		}				return comp;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -