📄 drawapplet.java
字号:
* a custom selection tool. */ protected Tool createSelectionTool() { return new SelectionTool(view()); } /** * Creates a tool button with the given image, tool, and text */ protected ToolButton createToolButton(String iconName, String toolName, Tool tool) { return new ToolButton(this, iconName, toolName, tool); } /** * Creates the drawing used in this application. * You need to override this method to use a Drawing * subclass in your application. By default a standard * Drawing is returned. */ protected Drawing createDrawing() { return new StandardDrawing(); } /** * Creates the drawing view used in this application. * You need to override this method to use a DrawingView * subclass in your application. By default a standard * DrawingView is returned. */ protected StandardDrawingView createDrawingView() { return new StandardDrawingView(this, 410, 370); } /** * Handles a user selection in the palette. * @see PaletteListener */ public void paletteUserSelected(PaletteButton button) { ToolButton toolButton = (ToolButton) button; setTool(toolButton.tool(), toolButton.name()); setSelected(toolButton); } /** * Handles when the mouse enters or leaves a palette button. * @see PaletteListener */ public void paletteUserOver(PaletteButton button, boolean inside) { if (inside) showStatus(((ToolButton) button).name()); else showStatus(fSelectedToolButton.name()); } /** * Gets the current drawing. * @see DrawingEditor */ public Drawing drawing() { return fDrawing; } /** * Gets the current tool. * @see DrawingEditor */ public Tool tool() { return fTool; } /** * Gets the current drawing view. * @see DrawingEditor */ public DrawingView view() { return fView; } /** * Sets the default tool of the editor. * @see DrawingEditor */ public void toolDone() { setTool(fDefaultToolButton.tool(), fDefaultToolButton.name()); setSelected(fDefaultToolButton); } /** * Handles a change of the current selection. Updates all * menu items that are selection sensitive. * @see DrawingEditor */ public void selectionChanged(DrawingView view) { setupAttributes(); } private void initDrawing() { fDrawing = createDrawing(); fView.setDrawing(fDrawing); toolDone(); } private void setTool(Tool t, String name) { if (fTool != null) fTool.deactivate(); fTool = t; if (fTool != null) { showStatus(name); fTool.activate(); } } private void setSelected(ToolButton button) { if (fSelectedToolButton != null) fSelectedToolButton.reset(); fSelectedToolButton = button; if (fSelectedToolButton != null) fSelectedToolButton.select(); } protected void loadDrawing(String param) { if (param == fgUntitled) { fDrawing.release(); initDrawing(); return; } String filename = getParameter(param); if (filename != null) readDrawing(filename); } private void readDrawing(String filename) { toolDone(); String type = guessType(filename); if (type.equals("storable")) readFromStorableInput(filename); else if (type.equals("serialized")) readFromObjectInput(filename); else showStatus("Unknown file type"); } private void readFromStorableInput(String filename) { try { URL url = new URL(getCodeBase(), filename); InputStream stream = url.openStream(); StorableInput input = new StorableInput(stream); fDrawing.release(); fDrawing = (Drawing)input.readStorable(); fView.setDrawing(fDrawing); } catch (IOException e) { initDrawing(); showStatus("Error:"+e); } } private void readFromObjectInput(String filename) { try { URL url = new URL(getCodeBase(), filename); InputStream stream = url.openStream(); ObjectInput input = new ObjectInputStream(stream); fDrawing.release(); fDrawing = (Drawing)input.readObject(); fView.setDrawing(fDrawing); } catch (IOException e) { initDrawing(); showStatus("Error: " + e); } catch (ClassNotFoundException e) { initDrawing(); showStatus("Class not found: " + e); } } private String guessType(String file) { if (file.endsWith(".draw")) return "storable"; if (file.endsWith(".ser")) return "serialized"; return "unknown"; } private void setupAttributes() { Color frameColor = (Color) AttributeFigure.getDefaultAttribute("FrameColor"); Color fillColor = (Color) AttributeFigure.getDefaultAttribute("FillColor"); Color textColor = (Color) AttributeFigure.getDefaultAttribute("TextColor"); Integer arrowMode = (Integer) AttributeFigure.getDefaultAttribute("ArrowMode"); String fontName = (String) AttributeFigure.getDefaultAttribute("FontName"); FigureEnumeration k = fView.selectionElements(); while (k.hasMoreElements()) { Figure f = k.nextFigure(); frameColor = (Color) f.getAttribute("FrameColor"); fillColor = (Color) f.getAttribute("FillColor"); textColor = (Color) f.getAttribute("TextColor"); arrowMode = (Integer) f.getAttribute("ArrowMode"); fontName = (String) f.getAttribute("FontName"); } fFrameColor.select(ColorMap.colorIndex(frameColor)); fFillColor.select(ColorMap.colorIndex(fillColor)); //fTextColor.select(ColorMap.colorIndex(textColor)); if (arrowMode != null) fArrowChoice.select(arrowMode.intValue()); if (fontName != null) fFontChoice.select(fontName); } protected void setSimpleDisplayUpdate() { fView.setDisplayUpdate(new SimpleUpdateStrategy()); fUpdateButton.setLabel("Simple Update"); fSimpleUpdate = true; } protected void setBufferedDisplayUpdate() { fView.setDisplayUpdate(new BufferedUpdateStrategy()); fUpdateButton.setLabel("Buffered Update"); fSimpleUpdate = false; } /** * Shows a help page for the applet. The URL of the help * page is derived as follows: codeBase+appletClassname+Help.html" */ protected void showHelp() { try { String appletPath = getClass().getName().replace('.', '/'); URL url = new URL(getCodeBase(), appletPath+"Help.html"); getAppletContext().showDocument(url, "Help"); } catch (IOException e) { showStatus("Help file not found"); } } /** * *** netscape browser work around *** */ private void startSleeper() { if (fSleeper == null) fSleeper = new SleeperThread(this); fSleeper.start(); } private void stopSleeper() { if (fSleeper != null) fSleeper.stop(); }}class SleeperThread extends Thread { Applet fApplet; SleeperThread(Applet applet) { fApplet = applet; } public void run() { try { for (;;) { fApplet.showStatus("loading icons..."); sleep(50); } } catch (InterruptedException e) { return; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -