📄 joonedit.java
字号:
public static int getNumericVersion() { return MAJOR_RELEASE * 1000000 + MINOR_RELEASE * 1000 + BUILD; } /** * Method to get the recommended Engine version. */ public static String getRecommendedEngineVersion() { return RECO_ENG_MAJOR_RELEASE + "." + RECO_ENG_MINOR_RELEASE + "." + RECO_ENG_BUILD; } /** * Method to get the numeric recommended Engine version. */ public static int getNumericRecommendedEngineVersion() { return RECO_ENG_MAJOR_RELEASE * 1000000 + RECO_ENG_MINOR_RELEASE * 1000 + RECO_ENG_BUILD; } /** * Creates the attributes menu and its submenus. Clients override this * method to add additional menu items. */ protected JMenu createAttributesMenu() { JMenu menu = new JMenu("Attributes"); menu.setMnemonic(KeyEvent.VK_T); JMenuItem mi = createColorMenu("Fill Color", "FillColor"); mi.setMnemonic(KeyEvent.VK_F); menu.add(mi); mi = createColorMenu("Pen Color", "FrameColor"); mi.setMnemonic(KeyEvent.VK_P); menu.add(mi); mi = createArrowMenu(); mi.setMnemonic(KeyEvent.VK_A); menu.add(mi); menu.addSeparator(); mi = createFontMenu(); mi.setMnemonic(KeyEvent.VK_O); menu.add(mi); mi = createFontSizeMenu(); mi.setMnemonic(KeyEvent.VK_S); menu.add(mi); mi = createFontStyleMenu(); mi.setMnemonic(KeyEvent.VK_N); menu.add(mi); mi = createColorMenu("Text Color", "TextColor"); mi.setMnemonic(KeyEvent.VK_T); menu.add(mi); return menu; } /** * Create a menu which allows the user to select a different look and feel at runtime. */ public JMenu createWindowMenu() { JMenu menu = new JMenu("Window"); menu.setMnemonic(KeyEvent.VK_W); menu.add(createLookAndFeel()); return menu; } public JMenu createLookAndFeel() { UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels(); JMenu menu = new JMenu("Look and Feel"); menu.setMnemonic(KeyEvent.VK_L); JMenuItem mi = null; for (int i = 0; i < lafs.length; i++) { mi = new JMenuItem(lafs[i].getName()); final String lnfClassName = lafs[i].getClassName(); mi.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { newLookAndFeel(lnfClassName); } } ); menu.add(mi); } return menu; } /** * Switch to a new Look&Feel */ private void newLookAndFeel(String landf) { try { UIManager.setLookAndFeel(landf); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { log.warn( "Exception thrown while adding a lookAndFeel. Message is : " + e.getMessage(), e); } } /** * Creates the edit menu. Clients override this * method to add additional menu items. */ protected JMenu createEditMenu() { JooneCommandMenu menu = new JooneCommandMenu("Edit"); menu.setMnemonic(KeyEvent.VK_E); menu.add(new JooneCutCommand("Cut", view()), new MenuShortcut('t'), KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); menu.add(new JooneCopyCommand("Copy", view()), new MenuShortcut('c'), KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); menu.add(new PasteCommand("Paste", view()), new MenuShortcut('p'), KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); menu.addSeparator(); menu.add(new JooneDuplicateCommand("Duplicate", view()), new MenuShortcut('d')); menu.add(new DeleteCommand("Delete", view()), new MenuShortcut('e'), KeyStroke.getKeyStroke("DELETE")); menu.addSeparator(); menu.add(new GroupCommand("Group", view()), new MenuShortcut('g')); menu.add(new UngroupCommand("Ungroup", view()), new MenuShortcut('u')); menu.addSeparator(); menu.add(new SendToBackCommand("Send to Back", view()), new MenuShortcut('s')); menu.add(new BringToFrontCommand("Bring to Front", view()), new MenuShortcut('b')); return menu; } /** * Shows a file dialog and saves drawing. */ public void promptSaveAs() { toolDone(); JFileChooser saveDialog; if (getDrawingTitle() == null || getDrawingTitle().equals("")) { saveDialog = createSaveFileChooser(); } else { saveDialog = new JFileChooser(getDrawingTitle()); saveDialog.setDialogTitle("Save File..."); } getStorageFormatManager().registerFileFilters(saveDialog); if (saveDialog.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { StorageFormat foundFormat = getStorageFormatManager().findStorageFormat(saveDialog.getFileFilter()); if (foundFormat != null) { saveDrawing(foundFormat, saveDialog.getSelectedFile().getAbsolutePath()); // Remember format for Save and enable the save menu item. latestStorageFormat = foundFormat; } else { showStatus("Not a valid file format: " + saveDialog.getFileFilter().getDescription()); } } } /** * Shows a file dialog and opens a drawing. */ public void promptOpen() { toolDone(); if (getDrawingTitle() == null || getDrawingTitle().equals("")) { createOpenFileChooser(); } else { createOpenFileChooser(getDrawingTitle()); m_openDialog.setDialogTitle("Open File..."); } getStorageFormatManager().registerFileFilters(m_openDialog); if (m_openDialog.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { StorageFormat foundFormat = getStorageFormatManager().findStorageFormat(m_openDialog.getFileFilter()); if (foundFormat != null) { promptNew(); loadDrawing(foundFormat, m_openDialog.getSelectedFile().getAbsolutePath()); // Remember format for Save. latestStorageFormat = foundFormat; } else { showStatus("Not a valid file format: " + m_openDialog.getFileFilter().getDescription()); } } } protected void initDrawing() { super.initDrawing(); latestStorageFormat = null; } /** * Exits the application. You should never override this method */ public void exit() { int n = askForSave("Save changes to Neural Net?"); if ((n == JOptionPane.NO_OPTION) || !((JooneStandardDrawingView)view()).isModified()) { writeIniFile(); destroy(); setVisible(false); dispose(); log.info("Exit invoked successfully. Frame disposed. Bye"); System.exit(0); } } protected void destroy() { if (m_openDialog != null) m_openDialog.saveDirectoryEntries(); } /** * Save a Drawing in a file */ protected void saveDrawing(StorageFormat storeFormat, String file) { try { setDrawingTitle(storeFormat.store(file, drawing())); ((JooneStandardDrawingView)view()).setModified(false); } catch (IOException e) { showStatus(e.toString()); } } protected int askForSave(String message) { int n = JOptionPane.CANCEL_OPTION; if (((JooneStandardDrawingView)view()).isModified()) { n = JOptionPane.showConfirmDialog(this, message, "JoonEdit", JOptionPane.YES_NO_CANCEL_OPTION); if (n == JOptionPane.YES_OPTION) { if (latestStorageFormat != null && getDrawingTitle() != null && !getDrawingTitle().equals("")) { saveDrawing(latestStorageFormat, getDrawingTitle()); } else { promptSaveAs(); } } } return n; } private void readIniFile() { try { // Create .joone dir if not already in existance. File jooneHome = new File(System.getProperty("user.home") + File.separator + ".joone"); if (!jooneHome.exists()) { jooneHome.mkdir(); } // Get the ini file. iniFile = new IniFile(jooneHome + File.separator + INI_FILE_NAME); // Get JooneEdit bounds. int state = Integer.parseInt(iniFile.getParameter("gui", "state", "0")); int x = Integer.parseInt(iniFile.getParameter("gui", "x", "0")); int y = Integer.parseInt(iniFile.getParameter("gui", "y", "0")); // See defaultSize() for width and height. width = Integer.parseInt(iniFile.getParameter("gui", "width", "800")); height = Integer.parseInt(iniFile.getParameter("gui", "height", "600")); setLocation(x, y); // Set state, i.e. maximized, normal, iconified. if (state != -99) { setState(state); } // Set look and feel. String lafName = iniFile.getParameter("gui", "laf", null); if (lafName != null) { UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels(); for (int i = 0; i < lafs.length; i++) { if (lafName.toLowerCase().equals(lafs[i].getClassName().toLowerCase())) { UIManager.setLookAndFeel(lafs[i].getClassName()); SwingUtilities.updateComponentTreeUI(this); } } } } catch (Exception e) { log.warn( "Exception thrown reading writing config file. Message is : " + e.getMessage(), e); } } private void writeIniFile() { try { // Only write frame boundary if it is in the normal state. if (getState() == Frame.NORMAL) { iniFile.setParameter("gui", "x", String.valueOf(getX())); iniFile.setParameter("gui", "y", String.valueOf(getY())); iniFile.setParameter("gui", "width", String.valueOf(getWidth())); iniFile.setParameter("gui", "height", String.valueOf(getHeight())); } iniFile.setParameter("gui", "state", String.valueOf(getState())); iniFile.setParameter("gui", "laf", UIManager.getLookAndFeel().getClass().getName()); } catch (Exception e) { log.warn( "Exception thrown while writing config file. Message is : " + e.getMessage(), e); } } private void pageSetup() { // Get a PrinterJob PrinterJob job = PrinterJob.getPrinterJob(); // Ask user for page format (e.g., portrait/landscape) job.pageDialog(job.defaultPage()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -