/*
* 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.
*
* ChangeLayerMenu.java
*
* Created on 17. Februar 2005, 08:58
*/
package gui;
/**
* Used as submenu in a popup menu for change layer actions.
*
* @author Alfons Wirtz
*/
class PopupMenuChangeLayer extends javax.swing.JMenu
{
/** Creates a new instance of ChangeLayerMenu */
PopupMenuChangeLayer(BoardFrame p_board_frame)
{
this.board_frame = p_board_frame;
board.LayerStructure layer_structure = board_frame.board_panel.board_handling.get_routing_board().layer_structure;
this.item_arr = new LayermenuItem[layer_structure.signal_layer_count()];
java.util.ResourceBundle resources =
java.util.ResourceBundle.getBundle("gui.resources.Default", p_board_frame.get_locale());
this.setText(resources.getString("change_layer"));
this.setToolTipText(resources.getString("change_layer_tooltip"));
int curr_signal_layer_no = 0;
for (int i = 0; i < layer_structure.arr.length; ++i)
{
if (layer_structure.arr[i].is_signal)
{
this.item_arr[curr_signal_layer_no] = new LayermenuItem(i);
this.item_arr[curr_signal_layer_no].setText(layer_structure.arr[i].name);
this.add(this.item_arr[curr_signal_layer_no]);
++curr_signal_layer_no;
}
}
}
/**
* Disables the item with index p_no and enables all other items.
*/
void disable_item(int p_no)
{
for (int i = 0; i < item_arr.length; ++i)
{
if (i == p_no)
{
this.item_arr[i].setEnabled(false);
}
else
{
this.item_arr[i].setEnabled(true);
}
}
}
private final BoardFrame board_frame;
private final LayermenuItem [] item_arr;
private class LayermenuItem extends javax.swing.JMenuItem
{
LayermenuItem(int p_layer_no)
{
java.util.ResourceBundle resources =
java.util.ResourceBundle.getBundle("gui.resources.Default", board_frame.get_locale());
message1 = resources.getString("layer_changed_to") + " ";
layer_no = p_layer_no;
addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
final BoardPanel board_panel = board_frame.board_panel;
if (board_panel.board_handling.change_layer_action(layer_no))
{
String layer_name = board_panel.board_handling.get_routing_board().layer_structure.arr[layer_no].name;
board_panel.screen_messages.set_status_message(message1 + layer_name);
}
// If change_layer failed the status message is set inside change_layer_action
// because the information of the cause of the failing is missing here.
board_panel.move_mouse(board_panel.right_button_click_location);
}
});
}
private final int layer_no;
private final String message1;
}
}