/** * Invoked when a mouse button was pressed. * * @param e The MouseEvent that holds all the information. */ @Override public void mousePressed(MouseEvent e) { if (!e.getComponent().isEnabled()) return; int me = e.getButton(); if (e.isPopupTrigger()) me = MouseEvent.BUTTON3; Tile tile = canvas.convertToMapTile(e.getX(), e.getY()); switch (me) { case MouseEvent.BUTTON1: // Record initial click point for purposes of dragging canvas.setDragPoint(e.getX(), e.getY()); if (canvas.isGotoStarted()) { PathNode path = canvas.getGotoPath(); if (path != null) { canvas.stopGoto(); // Move the unit freeColClient .getInGameController() .goToTile(canvas.getActiveUnit(), path.getLastNode().getTile()); } } else if (doubleClickTimer.isRunning()) { doubleClickTimer.stop(); } else { centerX = e.getX(); centerY = e.getY(); doubleClickTimer.start(); } canvas.requestFocus(); break; case MouseEvent.BUTTON2: if (tile != null) { Unit unit = canvas.getActiveUnit(); if (unit != null && unit.getTile() != tile) { PathNode dragPath = unit.findPath(tile); canvas.startGoto(); canvas.setGotoPath(dragPath); } } break; case MouseEvent.BUTTON3: // Cancel goto if one is active if (canvas.isGotoStarted()) canvas.stopGoto(); canvas.showTilePopup(tile, e.getX(), e.getY()); break; default: break; } }
/** * Invoked when a mouse button was clicked. * * @param e The MouseEvent that holds all the information. */ @Override public void mouseClicked(MouseEvent e) { try { if (e.getClickCount() > 1) { Tile tile = canvas.convertToMapTile(e.getX(), e.getY()); Colony colony = tile.getColony(); if (colony != null) { if (FreeColDebugger.isInDebugMode(FreeColDebugger.DebugMode.MENUS)) { canvas.showForeignColony(colony); } else { canvas.showColonyPanel(colony, null); } } } else { canvas.requestFocus(); } } catch (Exception ex) { logger.log(Level.WARNING, "Error in mouseClicked!", ex); } }
public Sim(int width, int height, int blockDims) { Util.setBlockDims(blockDims); canvas = new Canvas(width * blockDims, height * blockDims); ents = new EntityHandler(); map = new Map(width, height); map.generateRandomly(16, 6, .1); bottomPanel = new JPanel(); bottomPanel.setLayout(new GridLayout(2, 5)); showLinesSub = new JPanel(new GridLayout(2, 1)); showLines = new JCheckBox("Show Population Lines"); showLines.setSelected(false); speedPanel = new JPanel(new GridLayout(2, 1)); label1 = new JTextField("Speed (frames/second)"); label1.setEditable(false); speedPanel.add(label1); rate = new JSlider(JSlider.HORIZONTAL, 10, 210, 50); rate.setSnapToTicks(true); rate.setPaintTicks(true); rate.setPaintLabels(true); rate.setPaintTrack(true); rate.setMajorTickSpacing(50); rate.setMinorTickSpacing(10); speedPanel.add(rate); bottomPanel.add(speedPanel); label3 = new JTextField("Reproduction Qualification"); label3.setEditable(false); showLinesSub.add(showLines); showLinesSub.add(label3); bottomPanel.add(showLinesSub); label4 = new JTextField("Environment (Map) Alteration"); label4.setEditable(false); bottomPanel.add(label4); smoothMotion = new JCheckBox("Smooth Motion (worse pathfinding)"); smoothMotion.setSelected(false); bottomPanel.add(smoothMotion); mutationPanel = new JPanel(new GridLayout(2, 1)); label2 = new JTextField("Mutation Potential"); label2.setEditable(false); mutationPanel.add(label2); mutation = new JSlider(JSlider.HORIZONTAL, 0, 250, 100); mutation.setSnapToTicks(true); mutation.setPaintTicks(true); mutation.setPaintLabels(true); mutation.setPaintTrack(true); mutation.setMajorTickSpacing(50); mutation.setMinorTickSpacing(10); mutationPanel.add(mutation); bottomPanel.add(mutationPanel); repQualPanel = new JPanel(new GridLayout(3, 2)); repQualGroup = new ButtonGroup(); repQuals = new JRadioButton[3]; repQuals[0] = new JRadioButton("No Qualification"); repQuals[1] = new JRadioButton("1/2 Line"); repQuals[2] = new JRadioButton("3/4 Line"); repQuals[2].setSelected(true); repQualGroup.add(repQuals[0]); repQualGroup.add(repQuals[1]); repQualGroup.add(repQuals[2]); repQualPanel.add(repQuals[0]); repQualPanel.add(repQuals[1]); repQualPanel.add(repQuals[2]); bottomPanel.add(repQualPanel); mapAlter = new JSlider(JSlider.HORIZONTAL, 0, 10, 2); mapAlter.setSnapToTicks(true); mapAlter.setPaintTicks(true); mapAlter.setPaintLabels(true); mapAlter.setPaintTrack(true); mapAlter.setMajorTickSpacing(2); mapAlter.setMinorTickSpacing(1); bottomPanel.add(mapAlter); credits = new JTextArea( "Created by Evan Williams\n" + "15 Sep 2012 - 21 Sep 2012\n" + "*****@*****.**"); credits.setEditable(false); credits.setBackground(Color.LIGHT_GRAY); bottomPanel.add(credits); frame = new JFrame(); frame.setTitle("Natural Selection Simulator"); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.getContentPane().add(canvas, BorderLayout.CENTER); frame.getContentPane().add(bottomPanel, BorderLayout.SOUTH); frame.pack(); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.toFront(); canvas.requestFocus(); frame.setVisible(true); }
public void init() { initCanvas(); WindowEventListener listener = new WindowEventListener(); this.addWindowFocusListener(listener); this.addWindowListener(listener); this.addWindowStateListener(listener); JPanel wrapper = new JPanel(); wrapper.setLayout(new BoxLayout(wrapper, BoxLayout.Y_AXIS)); wrapper.add(Box.createVerticalGlue()); JPanel top = new JPanel(); top.setPreferredSize(new Dimension(800, 40)); top.setBorder(BorderFactory.createLineBorder(Color.BLACK)); top.setLayout(new BoxLayout(top, BoxLayout.X_AXIS)); ImageIcon pointerIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/pointer.png")) .getImage() .getScaledInstance(40, 40, Image.SCALE_SMOOTH)); JButton pointerButton = new JButton(pointerIcon); pointerButton.setMaximumSize(new Dimension(40, 30)); pointerButton.setBorder(null); pointerButton.setOpaque(false); // pointerButton.setContentAreaFilled(false); pointerButton.setBorderPainted(false); pointerButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { canvas.removeAllHighlights(); canvas.removeDrags(); canvas.repaint(); } }); JLabel stroke = new JLabel("Stroke: "); JButton strokeButton = new JButton(""); strokeButton.setPreferredSize(new Dimension(30, 25)); strokeButton.setMinimumSize(new Dimension(30, 25)); strokeButton.setMaximumSize(new Dimension(30, 25)); JLabel fill = new JLabel("Fill: "); JButton fillButton = new JButton(""); fillButton.setPreferredSize(new Dimension(30, 25)); fillButton.setMinimumSize(new Dimension(30, 25)); fillButton.setMaximumSize(new Dimension(30, 25)); JLabel zoom = new JLabel("Zoom: "); JSlider slider = new JSlider(0, 100, 50); slider.setMaximumSize(new Dimension(200, 30)); JButton minusMagnifier = new JButton("-"); JButton plusMagnifier = new JButton("+"); top.add(Box.createHorizontalGlue()); top.add(stroke); top.add(strokeButton); top.add(Box.createRigidArea(new Dimension(50, 40))); top.add(fill); top.add(fillButton); top.add(Box.createRigidArea(new Dimension(100, 40))); top.add(zoom); top.add(slider); top.add(minusMagnifier); top.add(plusMagnifier); top.add(Box.createRigidArea(new Dimension(50, 40))); top.add(pointerButton); top.add(Box.createRigidArea(new Dimension(100, 400))); top.add(Box.createHorizontalGlue()); wrapper.add(top); JPanel middle = new JPanel(); middle.setLayout(new BorderLayout()); JPanel left = new JPanel(); left.setPreferredSize(new Dimension(200, 600)); left.setBorder(BorderFactory.createLineBorder(Color.BLACK)); JPanel right = new JPanel(); right.setPreferredSize(new Dimension(600, 600)); right.setBorder(BorderFactory.createLineBorder(Color.BLACK)); middle.add(left, BorderLayout.WEST); middle.add(right, BorderLayout.EAST); wrapper.add(middle); JPanel bottom = new JPanel(); bottom.setPreferredSize(new Dimension(800, 25)); bottom.setBorder(BorderFactory.createLineBorder(Color.BLACK)); wrapper.add(bottom); add(wrapper); JLabel f1 = new JLabel(" Press F1 for help"); f1.setPreferredSize(new Dimension(197, 25)); JLabel view = new JLabel(" View"); view.setPreferredSize(new Dimension(55, 25)); JLabel dimensions = new JLabel(CANVAS_WIDTH + " x " + CANVAS_HEIGHT); dimensions.setPreferredSize(new Dimension(75, 25)); coordinates = new JLabel("Coordinates: (" + xCord + ", " + yCord + ")"); coordinates.setPreferredSize(new Dimension(150, 25)); bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS)); JSeparator separator = new JSeparator(JSeparator.VERTICAL); JSeparator separator2 = new JSeparator(JSeparator.VERTICAL); JSeparator separator3 = new JSeparator(JSeparator.VERTICAL); bottom.add(Box.createHorizontalGlue()); bottom.add(f1); bottom.add(separator); bottom.add(view); bottom.add(Box.createRigidArea(new Dimension(100, 25))); bottom.add(separator2); bottom.add(dimensions); bottom.add(separator3); bottom.add(Box.createRigidArea(new Dimension(100, 25))); bottom.add(coordinates); bottom.add(Box.createHorizontalGlue()); right.setLayout(new BorderLayout()); JPanel template = new JPanel(); template.setPreferredSize(new Dimension(580, 580)); template.setLayout(new BoxLayout(template, BoxLayout.Y_AXIS)); template.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); right.add(template, BorderLayout.CENTER); JPanel titlePanel = new JPanel(); titlePanel.setLayout(new BoxLayout(titlePanel, BoxLayout.X_AXIS)); titlePanel.setPreferredSize(new Dimension(580, 25)); titlePanel.setBackground(new Color(13, 16, 59)); title = new JLabel("Untitled"); title.setForeground(new Color(242, 245, 230)); // ImageIcon deleteIcon = new ImageIcon(new // ImageIcon(getClass().getResource("/resources/deleteIcon.png")).getImage().getScaledInstance(10, 10, Image.SCALE_SMOOTH)); ImageIcon deletehIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/deletehIcon.png")) .getImage() .getScaledInstance(10, 10, Image.SCALE_SMOOTH)); JButton closeButton = new JButton(deletehIcon); closeButton.setBorder(null); closeButton.setBackground(new Color(13, 16, 59)); closeButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (changesMade != 0) { requestClose(); } else { restartCanvas(); } } }); // closeButton.setRolloverIcon(deletehIcon); titlePanel.add(Box.createHorizontalGlue()); titlePanel.add(Box.createRigidArea(new Dimension(275, 25))); titlePanel.add(title); titlePanel.add(Box.createRigidArea(new Dimension(235, 25))); titlePanel.add(closeButton); titlePanel.add(Box.createRigidArea(new Dimension(15, 25))); titlePanel.add(Box.createHorizontalGlue()); canvasCover = new JPanel(); canvasCover.setBackground(new Color(26, 103, 150, 50)); canvasCover.setLayout(new GridBagLayout()); canvasCover.setPreferredSize(new Dimension(580, 580)); canvas.setMaximumSize(new Dimension(560, 540)); canvas.setPreferredSize(new Dimension(560, 540)); canvas.setMinimumSize(new Dimension(560, 540)); canvas.setBackground(Color.WHITE); canvas.requestFocus(); canvasCover.add(canvas); template.add(Box.createVerticalGlue()); template.add(titlePanel); template.add(canvasCover); template.add(Box.createVerticalGlue()); // Create the Menu JMenuBar menubar = new JMenuBar(); // Menu Names JMenu file = new JMenu("File"); file.setMnemonic(KeyEvent.VK_F); JMenu help = new JMenu("Help"); help.setMnemonic(KeyEvent.VK_H); JMenu edit = new JMenu("Edit"); edit.setMnemonic(KeyEvent.VK_E); // Menu Items and Listeners ImageIcon closeIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/closeIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); ImageIcon exitIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/exitIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); ImageIcon newIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/newIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); ImageIcon saveIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/saveIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); ImageIcon openIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/openIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); ImageIcon printIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/printIcon.png")) .getImage() .getScaledInstance(20, 20, Image.SCALE_SMOOTH)); JMenuItem closeMenuItem = new JMenuItem("Close", closeIcon); closeMenuItem.setMnemonic(KeyEvent.VK_W); closeMenuItem.setToolTipText("Close current window"); closeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); closeMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) { if (changesMade != 0) { requestClose(); } else { restartCanvas(); } } }); JMenuItem exitMenuItem = new JMenuItem("Exit", exitIcon); exitMenuItem.setToolTipText("Exit Application"); exitMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } }); JMenuItem newMenuItem = new JMenuItem("New", newIcon); newMenuItem.setMnemonic(KeyEvent.VK_N); newMenuItem.setToolTipText("Start a new file"); newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); newMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) { restartCanvas(); title.setText("Untitled"); } }); JMenuItem openMenuItem = new JMenuItem("Open File...", openIcon); openMenuItem.setMnemonic(KeyEvent.VK_O); openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); openMenuItem.setToolTipText("New"); openMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) { open(); } }); JMenuItem saveAsMenuItem = new JMenuItem("Save As...", saveIcon); saveAsMenuItem.setMnemonic(KeyEvent.VK_S); saveAsMenuItem.setToolTipText("Save As"); saveAsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); saveAsMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) { save(); } }); JMenuItem printMenuItem = new JMenuItem("Print", printIcon); printMenuItem.setMnemonic(KeyEvent.VK_P); printMenuItem.setToolTipText("Print Current Window"); printMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); printMenuItem.addActionListener(new PrintJob()); JMenuItem aboutMenuItem = new JMenuItem("About"); aboutMenuItem.setMnemonic(KeyEvent.VK_A); aboutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)); aboutMenuItem.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent event) {} }); JMenuItem helpMenuItem = new JMenuItem("Help"); helpMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // Add Items to Menus file.add(newMenuItem); file.add(openMenuItem); file.addSeparator(); file.add(closeMenuItem); file.addSeparator(); file.add(saveAsMenuItem); file.addSeparator(); file.add(printMenuItem); file.addSeparator(); file.add(exitMenuItem); help.add(aboutMenuItem); help.add(helpMenuItem); // Add Menus menubar.add(file); menubar.add(edit); menubar.add(help); // Add Menu Bar setJMenuBar(menubar); // Side Panel JPanel shapePanel = new JPanel(); shapePanel.setLayout(new BorderLayout()); JLabel shapesLabel = new JLabel("Shapes", JLabel.CENTER); shapesLabel.setFont(new Font("Georgia", Font.BOLD, 14)); shapesLabel.setBorder(new EmptyBorder(new Insets(10, 0, 10, 20))); JPanel shapeArea = new JPanel(); shapeArea.setLayout(new GridLayout(2, 2, 2, 0)); // Create the shape buttons and their icons squareIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/square.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); triangleIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/triangle.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); rectangleIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/rectangle.png")) .getImage() .getScaledInstance(45, 30, java.awt.Image.SCALE_SMOOTH)); hexagonIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/hexagon.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); squarehIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/squareh.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); trianglehIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/triangleh.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); rectanglehIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/rectangleh.png")) .getImage() .getScaledInstance(45, 30, java.awt.Image.SCALE_SMOOTH)); hexagonhIcon = new ImageIcon( new ImageIcon(getClass().getResource("/resources/hexagonh.png")) .getImage() .getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH)); squareButton = new JButton(squarehIcon); squareButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); squareButton.setContentAreaFilled(false); squareButton.setPressedIcon(squarehIcon); squareButton.setSelectedIcon(squarehIcon); squareButton.setRolloverIcon(squarehIcon); squareButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub clearButtons(); shapePressed = SQUARE; squareButton.setIcon(squarehIcon); } }); triangleButton = new JButton(triangleIcon); triangleButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); triangleButton.setContentAreaFilled(false); triangleButton.setPressedIcon(trianglehIcon); triangleButton.setSelectedIcon(trianglehIcon); triangleButton.setRolloverIcon(trianglehIcon); triangleButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub clearButtons(); shapePressed = TRIANGLE; triangleButton.setIcon(trianglehIcon); } }); rectangleButton = new JButton(rectangleIcon); rectangleButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); rectangleButton.setContentAreaFilled(false); rectangleButton.setPressedIcon(rectanglehIcon); rectangleButton.setSelectedIcon(rectanglehIcon); rectangleButton.setRolloverIcon(rectanglehIcon); rectangleButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub clearButtons(); shapePressed = RECTANGLE; rectangleButton.setIcon(rectanglehIcon); } }); hexagonButton = new JButton(hexagonIcon); hexagonButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); hexagonButton.setContentAreaFilled(false); hexagonButton.setPressedIcon(hexagonhIcon); hexagonButton.setSelectedIcon(hexagonhIcon); hexagonButton.setRolloverIcon(hexagonhIcon); hexagonButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub clearButtons(); shapePressed = HEXAGON; hexagonButton.setIcon(hexagonhIcon); } }); shapeArea.add(squareButton); shapeArea.add(triangleButton); shapeArea.add(rectangleButton); shapeArea.add(hexagonButton); shapePanel.add(shapesLabel, BorderLayout.NORTH); shapePanel.add(shapeArea); shapePanel.setBorder(BorderFactory.createBevelBorder(NORMAL, Color.BLACK, Color.BLACK)); left.setLayout(new GridBagLayout()); // left.add(Box.createVerticalGlue()); left.add(shapePanel); // left.add(Box.createVerticalGlue()); setResizable(false); // setSize(new Dimension(816, 726)); // setMinimumSize(new Dimension(816, 726)); // setMaximumSize(new Dimension(816, 726)); // setPreferredSize(new Dimension(816, 726)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Fold"); pack(); setLocationRelativeTo(null); // pack all the components in the JFrame setVisible(true); // show it requestFocus(); }