?? cpmaingui.java
字號:
/*
ChibiPaint
Copyright (c) 2006-2008 Marc Schefer
This file is part of ChibiPaint.
ChibiPaint is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
ChibiPaint is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ChibiPaint. If not, see <http://www.gnu.org/licenses/>.
*/
package chibipaint.gui;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import chibipaint.*;
public class CPMainGUI {
CPController controller;
CPPaletteManager paletteManager;
JMenuBar menuBar;
JPanel mainPanel;
JDesktopPane jdp;
JPanel bg;
// FIXME: replace this hack by something better
Map<String, JCheckBoxMenuItem> paletteItems = new HashMap();
public CPMainGUI(CPController controller) {
this.controller = controller;
controller.setMainGUI(this);
// try {
// UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
// } catch (Exception ex2) {} */
menuBar = createMainMenu(controller);
createGUI();
}
public JComponent getGUI() {
return mainPanel;
}
public JMenuBar getMenuBar() {
return menuBar;
}
private void createGUI() {
mainPanel = new JPanel(new BorderLayout());
jdp = new CPDesktop();
paletteManager = new CPPaletteManager(controller, jdp);
createCanvasGUI(jdp);
mainPanel.add(jdp, BorderLayout.CENTER);
JPanel statusBar = new CPStatusBar(controller);
mainPanel.add(statusBar, BorderLayout.PAGE_END);
// jdp.addContainerListener(this);
}
void createCanvasGUI(JComponent c) {
CPCanvas canvas = new CPCanvas(controller);
bg = canvas.getContainer();
c.add(bg);
canvas.grabFocus();
}
private JMenuBar createMainMenu(ActionListener listener) {
JMenuBar menuBar = new JMenuBar();
JMenu menu, submenu;
JMenuItem menuItem;
//
// File Menu
//
menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_F);
menuBar.add(menu);
if (controller.isRunningAsApplet()) {
menuItem = new JMenuItem("Send Oekaki", KeyEvent.VK_S);
menuItem.getAccessibleContext().setAccessibleDescription(
"Sends the oekaki to the server and exits ChibiPaint");
menuItem.setActionCommand("CPSend");
menuItem.addActionListener(listener);
menu.add(menuItem);
}
//
// Edit Menu
//
menu = new JMenu("Edit");
menu.setMnemonic(KeyEvent.VK_E);
menuBar.add(menu);
menuItem = new JMenuItem("Undo", KeyEvent.VK_U);
menuItem.getAccessibleContext().setAccessibleDescription("Undoes the most recent action");
menuItem.setActionCommand("CPUndo");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Redo", KeyEvent.VK_R);
menuItem.getAccessibleContext().setAccessibleDescription("Redoes a previously undone action");
menuItem.setActionCommand("CPRedo");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Clear History", KeyEvent.VK_H);
menuItem.getAccessibleContext().setAccessibleDescription("Removes all undo/redo information to regain memory");
menuItem.setActionCommand("CPClearHistory");
menuItem.addActionListener(listener);
menu.add(menuItem);
menu.add(new JSeparator());
menuItem = new JMenuItem("Cut", KeyEvent.VK_T);
menuItem.getAccessibleContext().setAccessibleDescription("");
menuItem.setActionCommand("CPCut");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Copy", KeyEvent.VK_C);
menuItem.getAccessibleContext().setAccessibleDescription("");
menuItem.setActionCommand("CPCopy");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Copy Merged", KeyEvent.VK_Y);
menuItem.getAccessibleContext().setAccessibleDescription("");
menuItem.setActionCommand("CPCopyMerged");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Paste", KeyEvent.VK_P);
menuItem.getAccessibleContext().setAccessibleDescription("");
menuItem.setActionCommand("CPPaste");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menu.add(new JSeparator());
menuItem = new JMenuItem("Select All", KeyEvent.VK_A);
menuItem.getAccessibleContext().setAccessibleDescription("Selects the whole canvas");
menuItem.setActionCommand("CPSelectAll");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menuItem = new JMenuItem("Deselect", KeyEvent.VK_D);
menuItem.getAccessibleContext().setAccessibleDescription("Deselects the whole canvas");
menuItem.setActionCommand("CPDeselectAll");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
menu.add(menuItem);
menu = new JMenu("Layers");
menu.setMnemonic(KeyEvent.VK_L);
menuBar.add(menu);
menuItem = new JMenuItem("Duplicate", KeyEvent.VK_D);
menuItem.getAccessibleContext().setAccessibleDescription("Creates a copy of the currently selected layer");
menuItem.setActionCommand("CPLayerDuplicate");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
menu.add(menuItem);
menu.add(new JSeparator());
menuItem = new JMenuItem("Merge Down", KeyEvent.VK_E);
menuItem.getAccessibleContext().setAccessibleDescription(
"Merges the currently selected layer with the one directly below it");
menuItem.setActionCommand("CPLayerMergeDown");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK));
menu.add(menuItem);
/*
* menuItem = new JMenuItem("Merge Visible", KeyEvent.VK_V);
* menuItem.getAccessibleContext().setAccessibleDescription("Merges all the visible layers");
* menuItem.setActionCommand("CPLayerMergeVisible"); menuItem.addActionListener(listener);
* menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK |
* ActionEvent.SHIFT_MASK)); menu.add(menuItem);
*/
menuItem = new JMenuItem("Merge All Layers", KeyEvent.VK_A);
menuItem.getAccessibleContext().setAccessibleDescription("Merges all the layers");
menuItem.setActionCommand("CPLayerMergeAll");
menuItem.addActionListener(listener);
menu.add(menuItem);
//
// Effects Menu
//
menu = new JMenu("Effects");
menu.setMnemonic(KeyEvent.VK_E);
menuBar.add(menu);
menuItem = new JMenuItem("Clear", KeyEvent.VK_C);
menuItem.getAccessibleContext().setAccessibleDescription("Clears the selected area");
menuItem.setActionCommand("CPClear");
menuItem.addActionListener(listener);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
menu.add(menuItem);
menuItem = new JMenuItem("Fill", KeyEvent.VK_F);
menuItem.getAccessibleContext().setAccessibleDescription("Fills the selected area with the current color");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -