home *** CD-ROM | disk | FTP | other *** search
- package sun.swing;
-
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import javax.swing.JFileChooser;
- import javax.swing.RowSorter;
- import javax.swing.event.ListDataEvent;
- import javax.swing.event.ListDataListener;
- import javax.swing.filechooser.FileSystemView;
- import javax.swing.plaf.basic.BasicDirectoryModel;
- import javax.swing.table.AbstractTableModel;
- import sun.awt.shell.ShellFolder;
- import sun.awt.shell.ShellFolderColumnInfo;
-
- class FilePane$DetailsTableModel extends AbstractTableModel implements ListDataListener {
- JFileChooser chooser;
- BasicDirectoryModel directoryModel;
- ShellFolderColumnInfo[] columns;
- int[] columnMap;
- // $FF: synthetic field
- final FilePane this$0;
-
- FilePane$DetailsTableModel(FilePane var1, JFileChooser var2) {
- this.this$0 = var1;
- this.chooser = var2;
- this.directoryModel = var1.getModel();
- this.directoryModel.addListDataListener(this);
- this.updateColumnInfo();
- }
-
- void updateColumnInfo() {
- ShellFolderColumnInfo[] var1 = ShellFolder.getFolderColumns(this.chooser.getCurrentDirectory());
- ArrayList var2 = new ArrayList();
- this.columnMap = new int[var1.length];
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- ShellFolderColumnInfo var4 = var1[var3];
- if (var4.isVisible()) {
- this.columnMap[var2.size()] = var3;
- var2.add(var4);
- }
- }
-
- this.columns = new ShellFolderColumnInfo[var2.size()];
- var2.toArray(this.columns);
- this.columnMap = Arrays.copyOf(this.columnMap, this.columns.length);
- List var5 = FilePane.access$900(this.this$0) == null ? null : FilePane.access$900(this.this$0).getSortKeys();
- this.fireTableStructureChanged();
- this.restoreSortKeys(var5);
- }
-
- private void restoreSortKeys(List<RowSorter.SortKey> var1) {
- if (var1 != null) {
- for(int var2 = 0; var2 < var1.size(); ++var2) {
- RowSorter.SortKey var3 = (RowSorter.SortKey)var1.get(var2);
- if (var3.getColumn() >= this.columns.length) {
- var1 = null;
- break;
- }
- }
-
- if (var1 != null) {
- FilePane.access$900(this.this$0).setSortKeys(var1);
- }
- }
-
- }
-
- public int getRowCount() {
- return this.directoryModel.getSize();
- }
-
- public int getColumnCount() {
- return this.columns.length;
- }
-
- public Object getValueAt(int var1, int var2) {
- return this.getFileColumnValue((File)this.directoryModel.getElementAt(var1), var2);
- }
-
- private Object getFileColumnValue(File var1, int var2) {
- return var2 == 0 ? var1 : ShellFolder.getFolderColumnValue(var1, this.columnMap[var2]);
- }
-
- public void setValueAt(Object var1, int var2, int var3) {
- if (var3 == 0) {
- JFileChooser var4 = this.this$0.getFileChooser();
- File var5 = (File)this.getValueAt(var2, var3);
- if (var5 != null) {
- String var6 = var4.getName(var5);
- String var7 = var5.getName();
- String var8 = ((String)var1).trim();
- if (!var8.equals(var6)) {
- String var9 = var8;
- int var10 = var7.length();
- int var11 = var6.length();
- if (var10 > var11 && var7.charAt(var11) == '.') {
- var9 = var8 + var7.substring(var11);
- }
-
- FileSystemView var12 = var4.getFileSystemView();
- File var13 = var12.createFileObject(var5.getParentFile(), var9);
- if (!var13.exists() && this.this$0.getModel().renameFile(var5, var13) && var12.isParent(var4.getCurrentDirectory(), var13)) {
- if (var4.isMultiSelectionEnabled()) {
- var4.setSelectedFiles(new File[]{var13});
- } else {
- var4.setSelectedFile(var13);
- }
- }
- }
- }
- }
-
- }
-
- public boolean isCellEditable(int var1, int var2) {
- File var3 = this.this$0.getFileChooser().getCurrentDirectory();
- return !FilePane.access$500(this.this$0) && var2 == 0 && FilePane.canWrite(var3);
- }
-
- public void contentsChanged(ListDataEvent var1) {
- new FilePane.DelayedSelectionUpdater(this.this$0);
- this.updateColumnInfo();
- }
-
- public void intervalAdded(ListDataEvent var1) {
- int var2 = var1.getIndex0();
- int var3 = var1.getIndex1();
- if (var2 == var3) {
- File var4 = (File)this.this$0.getModel().getElementAt(var2);
- if (var4.equals(FilePane.access$1000(this.this$0))) {
- new FilePane.DelayedSelectionUpdater(this.this$0, var4);
- FilePane.access$1002(this.this$0, (File)null);
- }
- }
-
- this.fireTableRowsInserted(var1.getIndex0(), var1.getIndex1());
- }
-
- public void intervalRemoved(ListDataEvent var1) {
- this.fireTableRowsDeleted(var1.getIndex0(), var1.getIndex1());
- }
-
- public ShellFolderColumnInfo[] getColumns() {
- return this.columns;
- }
-
- // $FF: synthetic method
- static Object access$1300(FilePane$DetailsTableModel var0, File var1, int var2) {
- return var0.getFileColumnValue(var1, var2);
- }
- }
-