📄 tiledialog.java
字号:
currentTile.setImage(d.getImageId()); } } private void newTile() { File[] files; JFileChooser ch = new JFileChooser(location); ch.setMultiSelectionEnabled(true); BufferedImage image = null; int ret = ch.showOpenDialog(this); if (ret == JFileChooser.APPROVE_OPTION) { files = ch.getSelectedFiles(); for (int i = 0; i < files.length; i++) { try { image = ImageIO.read(files[i]); // TODO: Support for a transparent color } catch (IOException e) { JOptionPane.showMessageDialog(this, e.getLocalizedMessage(), "Error!", JOptionPane.ERROR_MESSAGE); return; } Tile newTile = new Tile(tileset); newTile.setImage(tileset.addImage(image)); tileset.addNewTile(newTile); } if (files.length > 0) { location = files[0].getAbsolutePath(); } } queryTiles(); queryImages(); } public void setTileset(TileSet s) { tileset = s; if (tileset != null) { // Find new tile images at the location of the tileset if (tileset.getSource() != null) { location = tileset.getSource(); } else if (map != null) { location = map.getFilename(); } tilesetNameEntry.setText(tileset.getName()); } queryTiles(); queryImages(); updateEnabledState(); } public void queryTiles() { Vector listData; if (tileset != null && tileset.size() > 0) { listData = new Vector(); Iterator tileIterator = tileset.iterator(); while (tileIterator.hasNext()) { Tile tile = (Tile)tileIterator.next(); listData.add(tile); } tileList.setListData(listData); } if (currentTile != null) { tileList.setSelectedIndex(currentTile.getId() - 1); tileList.ensureIndexIsVisible(currentTile.getId() - 1); } } public void queryImages() { Vector listData = new Vector(); Enumeration ids = tileset.getImageIds(); while(ids.hasMoreElements()) { Image img = tileset.getImageById(Integer.parseInt((String) ids.nextElement())); if (img != null) listData.add(img); } imageList.setListData(listData); if (currentImageIndex != -1) { imageList.setSelectedIndex(currentImageIndex); imageList.ensureIndexIsVisible(currentImageIndex); } } private void setCurrentTile(Tile tile) { // Update the old current tile's properties // (happens automatically as properties are changed in place now) /* if (currentTile != null) { PropertiesTableModel model = (PropertiesTableModel)tileProperties.getModel(); currentTile.setProperties(model.getProperties()); } */ currentTile = tile; updateTileInfo(); updateEnabledState(); } private void setImageIndex(int i) { currentImageIndex = i; updateEnabledState(); } private void updateEnabledState() { boolean tilebmp = tileset.getTilebmpFile() != null; boolean tileSelected = currentTile != null; boolean atLeastOneSharedImage = tileset.getTotalImages() >= 1; newTileButton.setEnabled(!tilebmp); deleteTileButton.setEnabled(!tilebmp && tileSelected); changeImageButton.setEnabled(atLeastOneSharedImage && !tilebmp && tileSelected); duplicateTileButton.setEnabled(!tilebmp && tileSelected); //animationButton.setEnabled(!tilebmp && tileSelected && // currentTile instanceof AnimatedTile); tileProperties.setEnabled(tileSelected); createTileButton.setEnabled(!tilebmp); } /** * Updates the properties table with the properties of the current tile. */ private void updateTileInfo() { if (currentTile == null) { return; } Properties tileProps = currentTile.getProperties(); // (disabled making a copy, as properties are changed in place now) /* Properties editProps = new Properties(); for (Enumeration keys = tileProps.keys(); keys.hasMoreElements();) { String key = (String)keys.nextElement(); editProps.put(key, tileProps.getProperty(key)); } */ ((PropertiesTableModel)tileProperties.getModel()).update(tileProps); } public void actionPerformed(ActionEvent event) { Object source = event.getSource(); if (source == okButton) { tileset.setName(tilesetNameEntry.getText()); dispose(); } else if (source == deleteTileButton) { int answer = JOptionPane.showConfirmDialog( this, Resources.getString("action.tile.delete.confirm.message"), Resources.getString("action.tile.delete.confirm.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (answer == JOptionPane.YES_OPTION) { Tile tile = (Tile)tileList.getSelectedValue(); if (tile != null) { tileset.removeTile(tile.getId()); } queryTiles(); } } else if (source == changeImageButton) { changeImage(); } else if (source == newTileButton) { newTile(); } else if (source == duplicateTileButton) { Tile n = new Tile(currentTile); tileset.addNewTile(n); queryTiles(); // Select the last (cloned) tile tileList.setSelectedIndex(tileset.size() - 1); tileList.ensureIndexIsVisible(tileset.size() - 1); //} else if (source == animationButton) { // AnimationDialog ad = new AnimationDialog(this, ((AnimatedTile)currentTile).getSprite()); // ad.setVisible(true); } /* else if (source == setImagesCheck) { if (setImagesCheck.isSelected()) { tileset.enablesetImages(); updateEnabledState(); } else { int answer = JOptionPane.YES_OPTION; if (!tileset.safeToDisablesetImages()) { answer = JOptionPane.showConfirmDialog( this, "This tileset uses features that require the " + "use of shared images. Disable the use of shared " + "images?", "Are you sure?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); } if (answer == JOptionPane.YES_OPTION) { tileset.disablesetImages(); updateEnabledState(); } else { setImagesCheck.setSelected(true); } } } */ else if (source == createTileButton) { Image img = (Image)imageList.getSelectedValue(); Tile n = new Tile(tileset); n.setImage(tileset.getIdByImage(img)); tileset.addNewTile(n); queryTiles(); // Select the last (cloned) tile tileList.setSelectedIndex(tileset.size() - 1); tileList.ensureIndexIsVisible(tileset.size() - 1); JOptionPane.showMessageDialog( this, MessageFormat.format(Resources.getString("action.tile.create.done.message"), new Object[]{new Integer(n.getId())}), Resources.getString("action.tile.create.done.title"), JOptionPane.INFORMATION_MESSAGE); } repaint(); } public void valueChanged(ListSelectionEvent e) { if (e.getSource() == tileList) { setCurrentTile((Tile)tileList.getSelectedValue()); } else if (e.getSource() == imageList) { setImageIndex(imageList.getSelectedIndex()); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -