📄 javamapperframe.java
字号:
import java.awt.*;import java.awt.event.*;import java.io.*;public class JavaMapperFrame extends Frame implements ActionListener { public MapCanvas canvas; private FileDialog openDialog,saveDialog; private String path; private MediaTracker mediatracker = new MediaTracker(this); private CheckboxMenuItem mRect, mCircle, mPoly; public CheckboxMenuItem mSelect; private MenuItem mOpenImage,mOpenMap,mPreviewClient,mPreviewServer,mSaveClient,mSaveServer,mClose,mExit,mMapProp,mInstructions,mLicense,mAbout; public MenuItem mDeleteShape, mDeleteAllShapes, mPolyInsert, mPolyDelete; public PopupMenu polyPopup; public ActivateSetTool activateSetTool; public PolyListener polyListener; public Panel statusbar; public Label mouseXY; public String previewMode,mapName=""; public boolean saveNames=false; public static Preview previewFrame; public static Properties propFrame; private static FileViewer fileviewer; public JavaMapperFrame() { super("JavaMapper"); previewFrame = new Preview(this); propFrame = new Properties(this); fileviewer = new FileViewer(); activateSetTool = new ActivateSetTool(); polyListener = new PolyListener(); buildMenuBar(); setLayout(new BorderLayout()); ScrollPane scrollPane = new ScrollPane(); canvas = new MapCanvas(this); scrollPane.add(canvas); add("Center", scrollPane); statusbar = new Panel(); statusbar.setBackground(new Color(192,192,192)); statusbar.setLayout(new BorderLayout()); mouseXY = new Label("(0,0) "); statusbar.add("West",mouseXY); add("South",statusbar); polyPopup = new PopupMenu(); mPolyInsert = new MenuItem("Insert Point"); mPolyInsert.addActionListener(polyListener); polyPopup.add(mPolyInsert); mPolyDelete = new MenuItem("Delete Point"); mPolyDelete.addActionListener(polyListener); polyPopup.add(mPolyDelete); add(polyPopup); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { exit(); }}); setSize(450,400); setVisible(true); System.out.println(" done."); } private void buildMenuBar() { MenuBar menuBar = new MenuBar(); Menu mFile = new Menu("File"); mOpenImage = new MenuItem("Open Image"); mOpenImage.addActionListener(this); mFile.add(mOpenImage); mSaveClient = new MenuItem("Save Client-Side Map"); mSaveClient.addActionListener(this); mSaveClient.setEnabled(false); mFile.add(mSaveClient); mSaveServer = new MenuItem("Save Server-Side Map"); mSaveServer.addActionListener(this); mSaveServer.setEnabled(false); mFile.add(mSaveServer); mClose = new MenuItem("Close Image"); mClose.addActionListener(this); mClose.setEnabled(false); mFile.add(mClose); mFile.addSeparator(); mExit = new MenuItem("Exit"); mExit.addActionListener(this); mFile.add(mExit); Menu mEdit = new Menu("Edit"); mDeleteShape = new MenuItem("Delete Shape"); mDeleteShape.addActionListener(this); mDeleteShape.setEnabled(false); mEdit.add(mDeleteShape); mDeleteAllShapes = new MenuItem("Delete All Shapes"); mDeleteAllShapes.addActionListener(this); mDeleteAllShapes.setEnabled(false); mEdit.add(mDeleteAllShapes); mMapProp = new MenuItem("Map Properties"); mMapProp.addActionListener(this); mEdit.add(mMapProp); Menu mView = new Menu("View"); mPreviewClient = new MenuItem("Preview Client-Side Map"); mPreviewClient.addActionListener(this); mView.add(mPreviewClient); mPreviewServer = new MenuItem("Preview Server-Side Map"); mPreviewServer.addActionListener(this); mView.add(mPreviewServer); Menu mTool = new Menu("Tool"); mRect = new CheckboxMenuItem("Rectangle"); mRect.addItemListener(activateSetTool); mRect.setEnabled(false); mTool.add(mRect); mCircle = new CheckboxMenuItem("Circle"); mCircle.addItemListener(activateSetTool); mCircle.setEnabled(false); mTool.add(mCircle); mPoly = new CheckboxMenuItem("Polygon"); mPoly.addItemListener(activateSetTool); mPoly.setEnabled(false); mTool.add(mPoly); mTool.addSeparator(); mSelect = new CheckboxMenuItem("Select Shape"); mSelect.addItemListener(activateSetTool); mSelect.setEnabled(false); mTool.add(mSelect); Menu mHelp = new Menu("Help"); mInstructions = new MenuItem("Instructions"); mInstructions.addActionListener(this); mHelp.add(mInstructions); mLicense = new MenuItem("License"); mLicense.addActionListener(this); mHelp.add(mLicense); mAbout = new MenuItem("About JavaMapper"); mAbout.addActionListener(this); mHelp.add(mAbout); menuBar.setHelpMenu(mHelp); menuBar.add(mFile); menuBar.add(mEdit); menuBar.add(mView); menuBar.add(mTool); menuBar.add(mHelp); setMenuBar(menuBar); } public void actionPerformed(ActionEvent e) { MenuItem m = (MenuItem)(e.getSource()); String l = m.getLabel(); if (m==mOpenImage) openImage(); else if (m==mPreviewClient) previewClientMap(); else if (m==mPreviewServer) previewServerMap(); else if (m==mSaveClient) saveMap("client"); else if (m==mSaveServer) saveMap("server"); else if (m==mClose) closeImage(); else if (m==mExit) exit(); else if (m==mDeleteShape) canvas.tool.deleteShape(); else if (m==mDeleteAllShapes) canvas.tool.deleteAllShapes(); else if (m==mMapProp) showMapProperties(); else if (m==mInstructions) fileviewer.setFile("Instructions","README"); else if (m==mLicense) fileviewer.setFile("License","LICENSE"); else if (m==mAbout) fileviewer.setFile("About JavaMapper","ABOUT"); } class ActivateSetTool implements ItemListener { public void itemStateChanged(ItemEvent e) { setTool((CheckboxMenuItem)(e.getSource())); } } class PolyListener implements ActionListener { public void actionPerformed(ActionEvent e) { MenuItem m = (MenuItem)(e.getSource()); String l = m.getLabel(); System.out.println("menu "+l); if (m==mPolyInsert) canvas.tool.insertPolyPoint(); if (m==mPolyDelete) canvas.tool.deletePolyPoint(); } } protected void openImage() { if (openDialog == null) openDialog = new FileDialog(this,"Open Image",openDialog.LOAD); openDialog.setDirectory("./example"); openDialog.setFile("example.gif"); openDialog.show(); path = openDialog.getDirectory(); String filename = openDialog.getFile(); String filepath = path+filename; if (filename==null) return; String filetest = filename.toLowerCase(); if (filetest.indexOf(".gif")==-1 && filetest.indexOf(".jpg")==-1 && filetest.indexOf(".jpeg")==-1) { System.out.println("Error: not a GIF or JPG file"); return; } System.out.println("Trying to load "+filename+" ("+filepath+")"); Image image = Toolkit.getDefaultToolkit().getImage(filepath); mediatracker.addImage(image,0); try { mediatracker.waitForAll(); canvas.loadImage(image,filename); setTool(mRect); } catch (Exception e) { System.out.println("Failed to load "+filename); return; } setMenus(true); } public void closeImage() { mapName=""; canvas.closeImage(); setMenus(false); } public void setMenus(boolean b) { mRect.setEnabled(b); mCircle.setEnabled(b); mPoly.setEnabled(b); mSelect.setEnabled(b); mSaveClient.setEnabled(b); mSaveServer.setEnabled(b); mClose.setEnabled(b); } private void openMap() { } private void saveMap(String type) { if (saveDialog == null) saveDialog = new FileDialog(this,"",openDialog.SAVE); if (type=="client") saveDialog.setTitle("Save Client-Side Map"); else if (type=="client") saveDialog.setTitle("Save Client-Side Map"); if (path!=null) saveDialog.setDirectory(path); if (type=="client") saveDialog.setFile("untitled.html"); if (type=="server") saveDialog.setFile("untitled.map"); saveDialog.show(); path = saveDialog.getDirectory(); String filename = saveDialog.getFile(); String filepath = path+filename; if (filename==null) return; try { FileOutputStream file = new FileOutputStream(filepath); DataOutputStream content = new DataOutputStream(file); content.writeBytes(canvas.tool.getCode(type)); content.close(); file.close(); } catch (Exception e) { System.out.println("error writing file: "+filepath); return; } System.out.println("successfully wrote file: "+filepath); } private void showMapProperties() { propFrame.refresh(); propFrame.setVisible(true); } private void previewClientMap() { previewFrame.setMode("client"); previewFrame.setVisible(true); } private void previewServerMap() { previewFrame.setMode("server"); previewFrame.setVisible(true); } public void refreshDialogs() { if (previewFrame.isShowing()) previewFrame.refresh(); if (propFrame.isShowing()) propFrame.refresh(); } public void setTool(CheckboxMenuItem item) { mRect.setState(false); mCircle.setState(false); mPoly.setState(false); mSelect.setState(false); item.setState(true); String mode=""; if (item==mRect) mode = "rect"; else if (item==mCircle) mode = "circle"; else if (item==mPoly) mode = "poly"; else if (item==mSelect) mode = "select"; canvas.setTool(mode); } private void exit() { System.out.println("Quitting."); setVisible(false); System.exit(0); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -