/*
* 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.
*
* LayerComboBox.java
*
* Created on 20. Februar 2005, 08:14
*/
package gui;
import board.LayerStructure;
/**
* A Combo Box with items for individuell board layers plus an additional item for all layers.
*
* @author Alfons Wirtz
*/
public class ComboBoxLayer extends javax.swing.JComboBox
{
/** Creates a new instance of LayerComboBox */
public ComboBoxLayer(LayerStructure p_layer_structure, java.util.Locale p_locale)
{
java.util.ResourceBundle resources =
java.util.ResourceBundle.getBundle("gui.resources.Default", p_locale);
int signal_layer_count = p_layer_structure.signal_layer_count();
int item_count = signal_layer_count + 1;
boolean add_inner_layer_item = signal_layer_count > 2;
if (add_inner_layer_item)
{
++item_count;
}
this.layer_arr = new Layer [item_count];
this.layer_arr[0] = new Layer(resources.getString("all"), ALL_LAYER_INDEX);
int curr_layer_no = 0;
if (add_inner_layer_item )
{
this.layer_arr[1] = new Layer(resources.getString("inner"), INNER_LAYER_INDEX);
++curr_layer_no;
}
for (int i = 0; i < signal_layer_count; ++i)
{
++curr_layer_no;
board.Layer curr_signal_layer = p_layer_structure.get_signal_layer(i);
layer_arr[curr_layer_no] = new Layer(curr_signal_layer.name, p_layer_structure.get_no(curr_signal_layer));
}
this.setModel(new javax.swing.DefaultComboBoxModel(layer_arr));
this.setSelectedIndex(0);
}
public Layer get_selected_layer()
{
return (Layer) this.getSelectedItem();
}
private final Layer [] layer_arr;
/**
* Layers of the board layer structure plus layer "all".
* Index is the layer number in the board layer structure or -1 for layer "all".
*/
public static class Layer
{
Layer(String p_name, int p_index)
{
name = p_name;
index = p_index;
}
public String toString()
{
return name;
}
final String name;
/** The index in the board layer_structure, -1 for the layers with name "all" or "inner" */
final int index;
}
/** The layer index, when all layers are selected. */
public final static int ALL_LAYER_INDEX = -1;
/** The layer index, when all inner layers ar selected. */
public final static int INNER_LAYER_INDEX = -2;
}