Changeset 7ec5446


Ignore:
Timestamp:
May 23, 2010, 4:52:41 PM (10 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
79c0d2f
Parents:
4f1973c
Message:

Added supported version strings;

Replays are no longer parsed when starting WARP. Instead, they are parsed if the user selects them.

Location:
src/main/java/de/erichseifert/warp
Files:
4 edited

Legend:

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

    r4f1973c r7ec5446  
    2929import javax.swing.JTextField;
    3030
    31 import de.erichseifert.warp.Replay;
    32 import de.erichseifert.warp.replays.ReplayParserFactory;
    3331import de.erichseifert.warp.util.FileUtil;
    3432
     
    4038        private File parentDir;
    4139
    42         private Replay replay;
     40        private File replayFile;
    4341
    4442        /**
     
    5553        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    5654                JTextField comp = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
    57                 Replay replay = (Replay) value;
    58                 this.replay = replay;
    59                 String relativePath = FileUtil.getPathRelativeTo(parentDir, replay.getFile());
     55                File replayFile = (File) value;
     56                this.replayFile = replayFile;
     57                String relativePath = FileUtil.getPathRelativeTo(parentDir, replayFile);
    6058                comp.setText(relativePath);
    6159                return comp;
     
    6462        @Override
    6563        public Object getCellEditorValue() {
    66                 return replay;
     64                return replayFile;
    6765        }
    6866
     
    7270                int row = replayTable.getEditingRow();
    7371                int col = replayTable.getEditingColumn();
    74                 Replay replay = (Replay) replayTable.getValueAt(row, col);
     72                File replayFile = (File) replayTable.getValueAt(row, col);
    7573
    7674                JTextField comp = (JTextField) getComponent();
    77                 File replayFile = replay.getFile();
    7875                File parent = replayFile.getParentFile();
    7976                // Assemble replay path and sub-directories
     
    10097
    10198                // Assure re-insertion of the renamed replay
    102                 this.replay = ReplayParserFactory.getInstance().getReplayParser(replayFileNew);
     99                this.replayFile = replayFileNew;
    103100
    104101                // Remove an empty directory, if there are no files left
  • src/main/java/de/erichseifert/warp/gui/ReplayParserGUI.java

    r4f1973c r7ec5446  
    3333import java.util.Collections;
    3434import java.util.Comparator;
     35import java.util.HashMap;
    3536import java.util.HashSet;
     37import java.util.Map;
    3638
    3739import javax.swing.AbstractAction;
     
    8486        private final ReplayRowFilter<TableModel> replayTableFilter;
    8587
     88        private final Map<File, Replay> replayCache;
     89
    8690        private File replayDir;
    8791
     
    9195        public ReplayParserGUI() {
    9296                super("WARP");
     97
     98                replayCache = new HashMap<File, Replay>(101);
    9399
    94100                setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    194200                        @Override
    195201                        public boolean isCellEditable(int row, int column) {
    196                                 if (replayTable.getValueAt(row, column) instanceof Replay) {
     202                                if (replayTable.getValueAt(row, column) instanceof File) {
    197203                                        return true;
    198204                                }
     
    221227                                Component compDefault = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    222228                                if (compDefault instanceof JLabel) {
    223                                         File archiveFile = ((Replay) value).getFile();
     229                                        File archiveFile = ((File) value);
    224230                                        String path = FileUtil.getPathRelativeTo(replayDir, archiveFile);
    225231                                        ((JLabel) compDefault).setText(path);
     
    236242                                Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    237243                                DateFormatter dateFormatter = new DateFormatter();
    238                                 String dateString = "error";
    239                                 try {
    240                                         dateString = dateFormatter.valueToString(value);
    241                                 } catch (ParseException e) {
    242                                         // TODO Auto-generated catch block
    243                                         e.printStackTrace();
     244                                String dateString = "";
     245                                if (value != null) {
     246                                        try {
     247                                                dateString = dateFormatter.valueToString(value);
     248                                        } catch (ParseException e) {
     249                                                // TODO Auto-generated catch block
     250                                                e.printStackTrace();
     251                                        }
    244252                                }
    245253                                ((JLabel) comp).setText(dateString);
     
    252260                        public void valueChanged(ListSelectionEvent e) {
    253261                                if (!replayTable.isEditing()) {
    254                                         SC2Replay replay = null;
    255262                                        int selectedIndex = replayTable.getSelectedRow();
    256263                                        if (selectedIndex >= 0) {
    257                                                 replay = (SC2Replay) replayTable.getValueAt(selectedIndex, 0);
     264                                                File replayFile = (File) replayTable.getValueAt(selectedIndex, 0);
     265                                                Replay replay = replayCache.get(replayFile);
     266                                                if (replay == null) {
     267                                                        replay = ReplayParserFactory.getInstance().getReplayParser(replayFile);
     268                                                        replayCache.put(replayFile, replay);
     269                                                        // FIXME: Improve caching
     270                                                        if (replayCache.size() > 100) {
     271                                                                replayCache.clear();
     272                                                        }
     273                                                        // Populate empty row cells
     274                                                        Object[] tableRowFilled = replayToTableRow(replay);
     275                                                        for (int colIndex = 0; colIndex < tableRowFilled.length; colIndex++) {
     276                                                                replayTable.setValueAt(tableRowFilled[colIndex], selectedIndex, colIndex);
     277                                                        }
     278                                                }
     279                                                // FIXME: Renderer should be retrieved by a factory
     280                                                splitPane.add(replayRenderer.getRendererComponent((SC2Replay) replay), JSplitPane.LEFT);
    258281                                        }
    259                                         splitPane.add(replayRenderer.getRendererComponent(replay), JSplitPane.LEFT);
    260282                                }
    261283                        }
     
    284306                Collection<File> replayFiles = walk(replayDir, 3);
    285307                for (File replayFile : replayFiles) {
    286                         Replay replay = replayFactory.getReplayParser(replayFile);
    287                         if (replay != null) {
    288                                 replayTableModel.addRow(replayToTableRow(replay));
    289                         }
     308                        replayTableModel.addRow(new Object[] {replayFile, null, null});
    290309                }
    291310        }
     
    324343         */
    325344        private Object[] replayToTableRow(Replay replay) {
    326                 return new Object[] {replay, replay.getVersion(), replay.getFile().lastModified()};
     345                if (replay != null) {
     346                        return new Object[] {replay.getFile(), replay.getVersion(), replay.getFile().lastModified()};
     347                }
     348                return new Object[3];
    327349        }
    328350}
  • src/main/java/de/erichseifert/warp/replays/sc2replay/SC2Replay_v1.java

    r4f1973c r7ec5446  
    2626        static {
    2727                addVersionSupport(SC2Replay_v1.class, "0.2.0.13891");
     28                addVersionSupport(SC2Replay_v1.class, "0.3.0.14093");
     29                addVersionSupport(SC2Replay_v1.class, "0.4.0.14133");
     30                addVersionSupport(SC2Replay_v1.class, "0.5.0.14219");
    2831                addVersionSupport(SC2Replay_v1.class, "0.6.0.14259");
     32                addVersionSupport(SC2Replay_v1.class, "0.7.0.14356");
    2933                addVersionSupport(SC2Replay_v1.class, "0.8.0.14593");
    3034                addVersionSupport(SC2Replay_v1.class, "0.9.0.14621");
  • src/main/java/de/erichseifert/warp/replays/sc2replay/SC2Replay_v2.java

    r4f1973c r7ec5446  
    5050        static {
    5151                addVersionSupport(SC2Replay_v2.class, "0.11.0.15133");
     52                addVersionSupport(SC2Replay_v2.class, "0.12.0.15133");
    5253                addVersionSupport(SC2Replay_v2.class, "0.13.0.15250");
    5354                addVersionSupport(SC2Replay_v2.class, "0.14.0.15392");
     55                addVersionSupport(SC2Replay_v2.class, "0.14.1.15392");
     56                addVersionSupport(SC2Replay_v2.class, "0.15.0.15449");
    5457        }
    5558
     
    5962        private static final int FILE_INDEX_ACTIONS = 2;
    6063        private static final int FILE_INDEX_CHAT_LOG = 3;
    61         private static final int FILE_INDEX_MAP_PREVIEW = 9;
    6264
    6365        private ImageIcon mapPreview;
     
    150152                setPlayers(playerList);
    151153
    152                 // Extract map preview
    153                 //mapPreview = new ImageIcon(archive.getFiles()[FILE_INDEX_MAP_PREVIEW].getBytes());
    154154                fileChannel.close();
    155155        }
Note: See TracChangeset for help on using the changeset viewer.