📄 mapeditor.java
字号:
pasteMenuItem.setEnabled(false); JMenu transformSub = new JMenu(Resources.getString("menu.edit.transform")); transformSub.add(new TMenuItem(rot90Action, true)); transformSub.add(new TMenuItem(rot180Action, true)); transformSub.add(new TMenuItem(rot270Action, true)); transformSub.addSeparator(); transformSub.add(new TMenuItem(flipHorAction, true)); transformSub.add(new TMenuItem(flipVerAction, true)); mapEventAdapter.addListener(transformSub); JMenu editMenu = new JMenu(Resources.getString("menu.edit")); editMenu.add(new TMenuItem(undoHandler.getUndoAction())); editMenu.add(new TMenuItem(undoHandler.getRedoAction())); editMenu.addSeparator(); editMenu.add(copyMenuItem); editMenu.add(cutMenuItem); editMenu.add(pasteMenuItem); editMenu.addSeparator(); editMenu.add(transformSub); editMenu.addSeparator(); editMenu.add(createMenuItem(Resources.getString("menu.edit.preferences"), null, Resources.getString("menu.edit.preferences.tooltip"), null)); editMenu.add(createMenuItem(Resources.getString("menu.edit.brush"), null, Resources.getString("menu.edit.brush.tooltip"), "control B")); // todo : enable/disable undo/redo depending on whether a map is loaded mapEventAdapter.addListener(copyMenuItem); mapEventAdapter.addListener(cutMenuItem); mapEventAdapter.addListener(pasteMenuItem); JMenu mapMenu = new JMenu(Resources.getString("menu.map")); mapMenu.add(createMenuItem(Resources.getString("menu.map.resize"), null, Resources.getString("menu.map.resize.tooltip"))); mapMenu.add(createMenuItem(Resources.getString("menu.map.search"), null, Resources.getString("menu.map.search.tooltip"))); mapMenu.addSeparator(); mapMenu.add(createMenuItem(Resources.getString("menu.map.properties"), null, Resources.getString("menu.map.properties.tooltip"))); mapEventAdapter.addListener(mapMenu); JMenuItem layerAdd = new TMenuItem(addLayerAction); mapEventAdapter.addListener(layerAdd); JMenu layerMenu = new JMenu(Resources.getString("menu.layer")); layerMenu.add(layerAdd); layerMenu.add(new TMenuItem(cloneLayerAction)); layerMenu.add(new TMenuItem(deleteLayerAction)); layerMenu.addSeparator(); layerMenu.add(new TMenuItem(moveLayerUpAction)); layerMenu.add(new TMenuItem(moveLayerDownAction)); layerMenu.addSeparator(); layerMenu.add(new TMenuItem(mergeLayerDownAction)); layerMenu.add(new TMenuItem(mergeAllLayersAction)); layerMenu.addSeparator(); layerMenu.add(createMenuItem(Resources.getString("menu.layer.properties"), null, Resources.getString("menu.layer.properties.tooltip"))); JMenu tilesetMenu = new JMenu(Resources.getString("menu.tilesets")); tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.new"), null, Resources.getString("menu.tilesets.new.tooltip"))); tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.import"), null, Resources.getString("menu.tilesets.import.tooltip"))); tilesetMenu.addSeparator(); tilesetMenu.add(createMenuItem(Resources.getString("menu.tilesets.manager"), null, Resources.getString("menu.tilesets.manager.tooltip"))); /* objectMenu = new JMenu("Objects"); objectMenu.add(createMenuItem("Add Object", null, "Add an object")); mapEventAdapter.addListener(objectMenu); JMenu modifySub = new JMenu("Modify"); modifySub.add(createMenuItem("Expand Selection", null, "")); modifySub.add(createMenuItem("Contract Selection", null, "")); */ JMenu selectMenu = new JMenu(Resources.getString("menu.select")); selectMenu.add(new TMenuItem(selectAllAction, true)); selectMenu.add(new TMenuItem(cancelSelectionAction, true)); selectMenu.add(new TMenuItem(inverseAction, true)); //selectMenu.addSeparator(); //selectMenu.add(modifySub); gridMenuItem = new JCheckBoxMenuItem(Resources.getString("menu.view.grid")); gridMenuItem.addActionListener(this); gridMenuItem.setToolTipText(Resources.getString("menu.view.grid.tooltip")); gridMenuItem.setAccelerator(KeyStroke.getKeyStroke("control G")); cursorMenuItem = new JCheckBoxMenuItem(Resources.getString("menu.view.cursor")); cursorMenuItem.setSelected(prefs.getBoolean("cursorhighlight", true)); cursorMenuItem.addActionListener(this); cursorMenuItem.setToolTipText( Resources.getString("menu.view.cursor.tooltip")); boundaryMenuItem = new JCheckBoxMenuItem(Resources.getString("menu.view.boundaries")); boundaryMenuItem.addActionListener(this); boundaryMenuItem.setToolTipText(Resources.getString("menu.view.boundaries.tooltip")); boundaryMenuItem.setAccelerator(KeyStroke.getKeyStroke("control E")); coordinatesMenuItem = new JCheckBoxMenuItem(Resources.getString("menu.view.coordinates")); coordinatesMenuItem.addActionListener(this); coordinatesMenuItem.setToolTipText(Resources.getString("menu.view.coordinates.tooltip")); JMenu viewMenu = new JMenu(Resources.getString("menu.view")); viewMenu.add(new TMenuItem(zoomInAction)); viewMenu.add(new TMenuItem(zoomOutAction)); viewMenu.add(new TMenuItem(zoomNormalAction)); viewMenu.addSeparator(); viewMenu.add(gridMenuItem); viewMenu.add(cursorMenuItem); //TODO: Enable when boudary drawing code finished. //viewMenu.add(boundaryMenuItem); viewMenu.add(coordinatesMenuItem); mapEventAdapter.addListener(layerMenu); mapEventAdapter.addListener(tilesetMenu); mapEventAdapter.addListener(selectMenu); mapEventAdapter.addListener(viewMenu); JMenu helpMenu = new JMenu(Resources.getString("menu.help")); helpMenu.add(createMenuItem(Resources.getString("menu.help.plugins"), null, Resources.getString("menu.help.plugins.tooltip"))); helpMenu.add(createMenuItem(Resources.getString("menu.help.about"), null, Resources.getString("menu.help.about.tooltip"))); menuBar = new JMenuBar(); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(selectMenu); menuBar.add(viewMenu); menuBar.add(mapMenu); menuBar.add(layerMenu); menuBar.add(tilesetMenu); //menuBar.add(objectMenu); menuBar.add(helpMenu); } /** * Creates the tool bar. */ private JToolBar createToolBar() { Icon iconMove = Resources.getIcon("gimp-tool-move-22.png"); Icon iconPaint = Resources.getIcon("gimp-tool-pencil-22.png"); Icon iconErase = Resources.getIcon("gimp-tool-eraser-22.png"); Icon iconPour = Resources.getIcon("gimp-tool-bucket-fill-22.png"); Icon iconEyed = Resources.getIcon("gimp-tool-color-picker-22.png"); Icon iconMarquee = Resources.getIcon("gimp-tool-rect-select-22.png"); Icon iconMoveObject = Resources.getIcon("gimp-tool-object-move-22.png"); paintButton = createToggleButton(iconPaint, "paint", TOOL_PAINT); eraseButton = createToggleButton(iconErase, "erase", TOOL_ERASE); pourButton = createToggleButton(iconPour, "pour", TOOL_FILL); eyedButton = createToggleButton(iconEyed, "eyed", TOOL_EYE_DROPPER); marqueeButton = createToggleButton(iconMarquee, "marquee", TOOL_SELECT); moveButton = createToggleButton(iconMove, "move", TOOL_MOVE_LAYER); objectMoveButton = createToggleButton(iconMoveObject, "moveobject", TOOL_MOVE_OBJECT); mapEventAdapter.addListener(moveButton); mapEventAdapter.addListener(paintButton); mapEventAdapter.addListener(eraseButton); mapEventAdapter.addListener(pourButton); mapEventAdapter.addListener(eyedButton); mapEventAdapter.addListener(marqueeButton); mapEventAdapter.addListener(objectMoveButton); JToolBar toolBar = new JToolBar(JToolBar.VERTICAL); toolBar.setFloatable(true); toolBar.add(moveButton); toolBar.add(paintButton); toolBar.add(eraseButton); toolBar.add(pourButton); toolBar.add(eyedButton); toolBar.add(marqueeButton); toolBar.add(Box.createRigidArea(new Dimension(5, 5))); //TODO: put this back when working... //toolBar.add(objectMoveButton); //toolBar.add(Box.createRigidArea(new Dimension(0, 5))); toolBar.add(new TButton(zoomInAction)); toolBar.add(new TButton(zoomOutAction)); toolBar.add(Box.createRigidArea(new Dimension(5, 5))); toolBar.add(Box.createGlue()); tilePaletteButton = new TileButton(); tilePaletteButton.setActionCommand("palette"); mapEventAdapter.addListener(tilePaletteButton); tilePaletteButton.addActionListener(this); toolBar.add(tilePaletteButton); return toolBar; } private void createData() { dataPanel = new JPanel(new BorderLayout()); //navigation and tool options // TODO: the minimap is prohibitively slow, need to speed this up // before it can be used miniMap = new MiniMapViewer(); //miniMap.setMainPanel(mapScrollPane); JScrollPane miniMapSp = new JScrollPane(); miniMapSp.getViewport().setView(miniMap); miniMapSp.setMinimumSize(new Dimension(0, 120)); // Layer table layerTable = new JTable(new LayerTableModel(currentMap)); layerTable.getColumnModel().getColumn(0).setPreferredWidth(32); layerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); layerTable.getSelectionModel().addListSelectionListener(this); // Opacity slider opacitySlider = new JSlider(0, 100, 100); opacitySlider.addChangeListener(this); JLabel opacityLabel = new JLabel( Resources.getString("dialog.main.opacity.label")); opacityLabel.setLabelFor(opacitySlider); JPanel sliderPanel = new JPanel(); sliderPanel.setLayout(new BoxLayout(sliderPanel, BoxLayout.X_AXIS)); sliderPanel.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3)); sliderPanel.add(opacityLabel); sliderPanel.add(opacitySlider); sliderPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, sliderPanel.getPreferredSize().height)); // Layer buttons AbstractButton layerAddButton = new TButton(addLayerAction); mapEventAdapter.addListener(layerAddButton); JPanel layerButtons = new JPanel(); layerButtons.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; c.weightx = 1; layerButtons.add(layerAddButton, c); layerButtons.add(new TButton(moveLayerUpAction), c); layerButtons.add(new TButton(moveLayerDownAction), c); layerButtons.add(new TButton(cloneLayerAction), c); layerButtons.add(new TButton(deleteLayerAction), c); layerButtons.setMaximumSize(new Dimension(Integer.MAX_VALUE, layerButtons.getPreferredSize().height)); // Edit history /* JScrollPane editSp = new JScrollPane(); editHistoryList = new JList(); editSp.setHorizontalScrollBarPolicy( JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); editSp.getViewport().setView(editHistoryList); */ JPanel layerPanel = new JPanel(); layerPanel.setLayout(new GridBagLayout()); layerPanel.setPreferredSize(new Dimension(120, 120)); c = new GridBagConstraints(); c.insets = new Insets(3, 0, 0, 0); c.weightx = 1; c.weighty = 0; c.fill = GridBagConstraints.BOTH; c.gridx = 0; c.gridy = 0; //layerPanel.add(miniMapSp, c); c.weighty = 0; c.gridy += 1; layerPanel.add(sliderPanel, c); c.weighty = 1; c.gridy += 1; layerPanel.add(new JScrollPane(layerTable), c); c.weighty = 0; c.insets = new Insets(0, 0, 0, 0); c.gridy += 1; layerPanel.add(layerButtons, c); /* c.weighty = 0.25; c.insets = new Insets(3, 0, 0, 0); c.gridy += 1; layerPanel.add(editSp, c); */ // Create paint panel TilePalettePanel tilePalettePanel = new TilePalettePanel(); JPanel brushesPanel = new JPanel(); JTabbedPane paintPanel = new JTabbedPane(); paintPanel.add("Palette", tilePalettePanel); paintPanel.add("Brushes", brushesPanel); paintPanel.setSelectedIndex(1); JToolBar tabsPanel = new JToolBar(); tabsPanel.add(paintPanel); dataPanel.add(layerPanel); } private void createStatusBar() { statusBar = new JPanel(); statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); zoomLabel = new JLabel("100%"); zoomLabel.setPreferredSize(zoomLabel.getPreferredSize()); tileCoordsLabel = new JLabel(" ", SwingConstants.CENTER); statusBar.setBorder(BorderFactory.createEmptyBorder(2, 5, 2, 5)); JPanel largePart = new JPanel(); statusBar.add(largePart); statusBar.add(tileCoordsLabel); statusBar.add(Box.createRigidArea(new Dimension(20, 0))); statusBar.add(zoomLabel); } private void updateLayerTable() { int cl = currentLayer; if (layerTable.isEditing()) { layerTable.getCellEditor(layerTable.getEditingRow(), layerTable.getEditingColumn()).cancelCellEditing(); } ((LayerTableModel)layerTable.getModel()).setMap(currentMap); if (currentMap != null) { if (currentMap.getTotalLayers() > 0 && cl == -1) { cl = 0; } setCurrentLayer(cl); } updateLayerOperations(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -