/*
* 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.
*
* PadstacksWindow.java
*
* Created on 6. Maerz 2005, 06:47
*/
package gui;
import datastructures.UndoableObjects;
import library.Padstack;
import library.Padstacks;
/**
* Window displaying the library padstacks.
*
* @author Alfons Wirtz
*/
public class WindowPadstacks extends WindowObjectListWithFilter
{
/** Creates a new instance of PadstacksWindow */
public WindowPadstacks(BoardFrame p_board_frame)
{
super(p_board_frame);
java.util.ResourceBundle resources =
java.util.ResourceBundle.getBundle("gui.resources.Default", p_board_frame.get_locale());
this.setTitle(resources.getString("padstacks"));
p_board_frame.set_context_sensitive_help(this, "WindowObjectList_LibraryPadstacks");
}
/**
* Fills the list with the library padstacks.
*/
protected void fill_list()
{
Padstacks padstacks = this.board_frame.board_panel.board_handling.get_routing_board().library.padstacks;
Padstack[] sorted_arr = new Padstack[padstacks.count()];
for (int i = 0; i < sorted_arr.length; ++i)
{
sorted_arr[i] = padstacks.get(i + 1);
}
java.util.Arrays.sort(sorted_arr);
for (int i = 0; i < sorted_arr.length; ++i)
{
this.add_to_list(sorted_arr[i]);
}
this.list.setVisibleRowCount(Math.min(padstacks.count(), DEFAULT_TABLE_SIZE));
}
protected void select_instances()
{
Object[] selected_padstacks = list.getSelectedValuesList().toArray();
if (selected_padstacks.length <= 0)
{
return;
}
java.util.Collection<Padstack> padstack_list = new java.util.LinkedList<Padstack>();
for (int i = 0; i < selected_padstacks.length; ++i)
{
padstack_list.add((Padstack)selected_padstacks[i]);
}
board.RoutingBoard routing_board = board_frame.board_panel.board_handling.get_routing_board();
java.util.Set<board.Item> board_instances = new java.util.TreeSet<board.Item>();
java.util.Iterator<UndoableObjects.UndoableObjectNode> it = routing_board.item_list.start_read_object();
for(;;)
{
datastructures.UndoableObjects.Storable curr_object = routing_board.item_list.read_object(it);
if (curr_object == null)
{
break;
}
if (curr_object instanceof board.DrillItem)
{
library.Padstack curr_padstack = ((board.DrillItem) curr_object).get_padstack();
for (Padstack curr_selected_padstack : padstack_list)
{
if (curr_padstack == curr_selected_padstack)
{
board_instances.add((board.Item)curr_object);
break;
}
}
}
}
board_frame.board_panel.board_handling.select_items(board_instances);
board_frame.board_panel.board_handling.zoom_selection();
}
}