Changeset 0e56a7e


Ignore:
Timestamp:
Mar 22, 2010, 2:50:28 PM (11 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
3519f4d
Parents:
03a2caa
Message:

Support for editing sub-directories of the replays

Location:
src/main/java/de/erichseifert/warp
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/erichseifert/warp/gui/ReplayParserGUI.java

    r03a2caa r0e56a7e  
    3838import javax.swing.AbstractAction;
    3939import javax.swing.Action;
    40 import javax.swing.DefaultCellEditor;
    4140import javax.swing.DefaultComboBoxModel;
    4241import javax.swing.JComboBox;
     
    6766import de.erichseifert.warp.io.Settings;
    6867import de.erichseifert.warp.replays.sc2replay.SC2Replay;
     68import de.erichseifert.warp.util.GUIUtil;
    6969
    7070/**
     
    8080        private final ReplayRowFilter<TableModel> replayTableFilter;
    8181
     82        private File replayDir;
     83
    8284        /**
    8385         * Creates a new <code>ReplayParserGUI</code> object with the default options.
     
    9092                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    9193                setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
     94
     95                String replayPath = Settings.getInstance().getReplayDir();
     96                if (replayPath != null) {
     97                        replayDir = new File(replayPath);
     98                }
    9299
    93100                // Actions
     
    208215                                if (compDefault instanceof JLabel) {
    209216                                        File archiveFile = ((Replay) value).getFile();
    210                                         ((JLabel) compDefault).setText(archiveFile.getName());
     217                                        String path = GUIUtil.getPathRelativeTo(replayDir, archiveFile);
     218                                        ((JLabel) compDefault).setText(path);
    211219                                }
    212220                                return compDefault;
     
    214222                });
    215223                // Create editor for the replay column
    216                 DefaultCellEditor replayCellEditor = new DefaultCellEditor(new JTextField()) {
    217                         private Replay replay;
    218 
    219                         @Override
    220                         public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    221                                 JTextField comp = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
    222                                 Replay replay = (Replay) value;
    223                                 this.replay = replay;
    224                                 comp.setText(replay.getFile().getName());
    225                                 return comp;
    226                         }
    227 
    228                         @Override
    229                         public Object getCellEditorValue() {
    230                                 return replay;
    231                         }
    232 
    233                         @Override
    234                         public boolean stopCellEditing() {
    235                                 // TODO: Add support for subdirectories
    236                                 int row = replayTable.getEditingRow();
    237                                 int col = replayTable.getEditingColumn();
    238                                 Replay replay = (Replay) replayTable.getValueAt(row, col);
    239 
    240                                 JTextField comp = (JTextField) getComponent();
    241                                 File replayFile = replay.getFile();
    242                                 String parent = replayFile.getParent();
    243                                 File replayFileNew = new File(parent, comp.getText());
    244                                 replayFile.renameTo(replayFileNew);
    245                                 // Assure reinsertion of the renamed replay
    246                                 try {
    247                                         this.replay = new SC2Replay(replayFileNew);
    248                                 } catch (IOException e) {
    249                                         // TODO Auto-generated catch block
    250                                         e.printStackTrace();
    251                                 }
    252                                 return super.stopCellEditing();
    253                         }
    254                 };
     224                ReplayCellEditor replayCellEditor = new ReplayCellEditor(replayTable, replayDir);
    255225                replayColumn.setCellEditor(replayCellEditor);
    256226                replayTable.getColumnModel().getColumn(2).setCellRenderer(new DefaultTableCellRenderer() {
     
    287257                splitPane.add(replayTableScroller, JSplitPane.RIGHT);
    288258
    289                 String replayPath = Settings.getInstance().getReplayDir();
    290                 if (replayPath != null) {
    291                         setReplayDir(new File(replayPath));
    292                 }
     259                setReplayDir(replayDir);
    293260        }
    294261
     
    298265         */
    299266        private void setReplayDir(File replayDir) {
     267                this.replayDir = replayDir;
     268                if (replayDir == null) {
     269                        return;
     270                }
    300271                // Store selected directory for the next startup
    301272                Settings.getInstance().setReplayDir(replayDir.getPath());
  • src/main/java/de/erichseifert/warp/util/GUIUtil.java

    r03a2caa r0e56a7e  
    2323
    2424import java.awt.Color;
     25import java.io.File;
    2526
    2627/**
     
    4647                return colorHex;
    4748        }
     49
     50        public static String getPathRelativeTo(File parent, File child) {
     51                String path = child.getName();
     52                if (parent == null) {
     53                        return path;
     54                }
     55                File childParent = child.getParentFile();
     56                while (childParent != null && !childParent.getAbsolutePath().equals(parent.getAbsolutePath())) {
     57                        path = childParent.getName() + File.separator + path;
     58                        childParent = childParent.getParentFile();
     59                }
     60
     61                return path;
     62        }
    4863}
Note: See TracChangeset for help on using the changeset viewer.