/* * Copyright (C) 2014 Alfons Wirtz * website www.freerouting.net * * This program 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. * * This program 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 at <http://www.gnu.org/licenses/> * for more details. * * BoardToolbarPanel.java * * Created on 15. Februar 2005, 09:44 */ package gui; /** * Implements the toolbar panel of the board frame. * * @author Alfons Wirtz */ class BoardToolbar extends javax.swing.JPanel { /** Creates a new instance of BoardToolbarPanel */ BoardToolbar(BoardFrame p_board_frame) { this.board_frame = p_board_frame; java.util.ResourceBundle resources = java.util.ResourceBundle.getBundle("gui.resources.BoardToolbar", p_board_frame.get_locale()); this.setLayout(new java.awt.BorderLayout()); // create the left toolbar final javax.swing.JToolBar left_toolbar = new javax.swing.JToolBar(); final javax.swing.ButtonGroup toolbar_button_group = new javax.swing.ButtonGroup(); this.select_button = new javax.swing.JToggleButton(); this.route_button = new javax.swing.JToggleButton(); this.drag_button = new javax.swing.JToggleButton(); final javax.swing.JLabel jLabel1 = new javax.swing.JLabel(); left_toolbar.setMaximumSize(new java.awt.Dimension(1200, 23)); toolbar_button_group.add(select_button); select_button.setSelected(true); select_button.setText(resources.getString("select_button")); select_button.setToolTipText(resources.getString("select_button_tooltip")); select_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.set_select_menu_state(); } }); left_toolbar.add(select_button); toolbar_button_group.add(route_button); route_button.setText(resources.getString("route_button")); route_button.setToolTipText(resources.getString("route_button_tooltip")); route_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.set_route_menu_state(); } }); left_toolbar.add(route_button); toolbar_button_group.add(drag_button); drag_button.setText(resources.getString("drag_button")); drag_button.setToolTipText(resources.getString("drag_button_tooltip")); drag_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.set_drag_menu_state(); } }); left_toolbar.add(drag_button); jLabel1.setMaximumSize(new java.awt.Dimension(30, 10)); jLabel1.setMinimumSize(new java.awt.Dimension(3, 10)); jLabel1.setPreferredSize(new java.awt.Dimension(30, 10)); left_toolbar.add(jLabel1); this.add(left_toolbar, java.awt.BorderLayout.WEST); // create the middle toolbar final javax.swing.JToolBar middle_toolbar = new javax.swing.JToolBar(); final javax.swing.JButton autoroute_button = new javax.swing.JButton(); autoroute_button.setText(resources.getString("autoroute_button")); autoroute_button.setToolTipText(resources.getString("autoroute_button_tooltip")); autoroute_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.start_batch_autorouter(); } }); middle_toolbar.add(autoroute_button); final javax.swing.JLabel separator_2 = new javax.swing.JLabel(); separator_2.setMaximumSize(new java.awt.Dimension(10, 10)); separator_2.setPreferredSize(new java.awt.Dimension(10, 10)); separator_2.setRequestFocusEnabled(false); middle_toolbar.add(separator_2); final javax.swing.JButton undo_button = new javax.swing.JButton(); undo_button.setText(resources.getString("undo_button")); undo_button.setToolTipText(resources.getString("undo_button_tooltip")); undo_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.cancel_state(); board_frame.board_panel.board_handling.undo(); board_frame.refresh_windows(); } }); middle_toolbar.add(undo_button); final javax.swing.JButton redo_button = new javax.swing.JButton(); redo_button.setText(resources.getString("redo_button")); redo_button.setToolTipText(resources.getString("redo_button_tooltip")); redo_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.redo(); } }); middle_toolbar.add(redo_button); final javax.swing.JLabel separator_1 = new javax.swing.JLabel(); separator_1.setMaximumSize(new java.awt.Dimension(10, 10)); separator_1.setPreferredSize(new java.awt.Dimension(10, 10)); middle_toolbar.add(separator_1); final javax.swing.JButton incompletes_button = new javax.swing.JButton(); incompletes_button.setText(resources.getString("incompletes_button")); incompletes_button.setToolTipText(resources.getString("incompletes_button_tooltip")); incompletes_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.toggle_ratsnest(); } }); middle_toolbar.add(incompletes_button); final javax.swing.JButton violation_button = new javax.swing.JButton(); violation_button.setText(resources.getString("violations_button")); violation_button.setToolTipText(resources.getString("violations_button_tooltip")); violation_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.toggle_clearance_violations(); } }); middle_toolbar.add(violation_button); final javax.swing.JLabel separator_3 = new javax.swing.JLabel(); separator_3.setMaximumSize(new java.awt.Dimension(10, 10)); separator_3.setPreferredSize(new java.awt.Dimension(10, 10)); separator_3.setRequestFocusEnabled(false); middle_toolbar.add(separator_3); final javax.swing.JButton display_all_button = new javax.swing.JButton(); display_all_button.setText(resources.getString("display_all_button")); display_all_button.setToolTipText(resources.getString("display_all_button_tooltip")); display_all_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.zoom_all(); } }); middle_toolbar.add(display_all_button); final javax.swing.JButton display_region_button = new javax.swing.JButton(); display_region_button.setText(resources.getString("display_region_button")); display_region_button.setToolTipText(resources.getString("display_region_button_tooltip")); display_region_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board_frame.board_panel.board_handling.zoom_region(); } }); middle_toolbar.add(display_region_button); this.add(middle_toolbar, java.awt.BorderLayout.CENTER); // create the right toolbar final javax.swing.JToolBar right_toolbar = new javax.swing.JToolBar(); final javax.swing.JLabel unit_label = new javax.swing.JLabel(); java.text.NumberFormat number_format = java.text.NumberFormat.getInstance(p_board_frame.get_locale()); number_format.setMaximumFractionDigits(7); this.unit_factor_field = new javax.swing.JFormattedTextField(number_format); this.unit_combo_box = new javax.swing.JComboBox(); final javax.swing.JLabel jLabel4 = new javax.swing.JLabel(); right_toolbar.setAutoscrolls(true); unit_label.setText(resources.getString("unit_button")); unit_label.setMaximumSize(new java.awt.Dimension(30, 21)); unit_label.setPreferredSize(new java.awt.Dimension(30, 21)); right_toolbar.add(unit_label); unit_factor_field.setHorizontalAlignment(javax.swing.JTextField.CENTER); unit_factor_field.setValue(1); unit_factor_field.setMaximumSize(new java.awt.Dimension(100, 18)); unit_factor_field.setMinimumSize(new java.awt.Dimension(40, 18)); unit_factor_field.setPreferredSize(new java.awt.Dimension(80, 18)); unit_factor_field.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { if (evt.getKeyChar() == '\n') { Object input = unit_factor_field.getValue(); if (input instanceof Number) { double input_value = ((Number)input).doubleValue(); if (input_value > 0) { board_frame.board_panel.board_handling.change_user_unit_factor(input_value); } } double unit_factor = board_frame.board_panel.board_handling.coordinate_transform.user_unit_factor; unit_factor_field.setValue(unit_factor); board_frame.refresh_windows(); } } }); right_toolbar.add(unit_factor_field); unit_combo_box.setModel(new javax.swing.DefaultComboBoxModel(board.Unit.values())); unit_combo_box.setFocusTraversalPolicyProvider(true); unit_combo_box.setInheritsPopupMenu(true); unit_combo_box.setMaximumSize(new java.awt.Dimension(60, 18)); unit_combo_box.setMinimumSize(new java.awt.Dimension(60, 18)); unit_combo_box.setOpaque(false); unit_combo_box.setPreferredSize(new java.awt.Dimension(60, 18)); unit_combo_box.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { board.Unit new_unit = (board.Unit) unit_combo_box.getSelectedItem(); board_frame.board_panel.board_handling.change_user_unit(new_unit); board_frame.refresh_windows(); } }); right_toolbar.add(unit_combo_box); jLabel4.setMaximumSize(new java.awt.Dimension(30, 14)); jLabel4.setPreferredSize(new java.awt.Dimension(30, 14)); right_toolbar.add(jLabel4); this.add(right_toolbar, java.awt.BorderLayout.EAST); } /** * Sets the selected button in the menu button button group */ void hilight_selected_button() { interactive.InteractiveState interactive_state = this.board_frame.board_panel.board_handling.get_interactive_state(); if (interactive_state instanceof interactive.RouteMenuState) { this.route_button.setSelected(true); } else if (interactive_state instanceof interactive.DragMenuState) { this.drag_button.setSelected(true); } else if (interactive_state instanceof interactive.SelectMenuState) { this.select_button.setSelected(true); } } private final BoardFrame board_frame; private final javax.swing.JToggleButton select_button; private final javax.swing.JToggleButton route_button; private final javax.swing.JToggleButton drag_button; final javax.swing.JFormattedTextField unit_factor_field; final javax.swing.JComboBox unit_combo_box; }