/* * 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. * * NetsWindow.java * * Created on 24. Maerz 2005, 07:41 */ package gui; import rules.Net; import rules.Nets; /** * * @author Alfons Wirtz */ public class WindowNets extends WindowObjectListWithFilter { /** Creates a new instance of NetsWindow */ public WindowNets(BoardFrame p_board_frame) { super(p_board_frame); this.resources = java.util.ResourceBundle.getBundle("gui.resources.WindowNets", p_board_frame.get_locale()); this.setTitle(resources.getString("title")); javax.swing.JPanel curr_button_panel = new javax.swing.JPanel(); this.south_panel.add(curr_button_panel, java.awt.BorderLayout.NORTH); final javax.swing.JButton assign_class_button = new javax.swing.JButton(resources.getString("assign_class")); curr_button_panel.add(assign_class_button); assign_class_button.setToolTipText(resources.getString("assign_class_tooltip")); assign_class_button.addActionListener(new AssignClassListener()); final javax.swing.JButton filter_incompletes_button = new javax.swing.JButton(resources.getString("filter_incompletes")); curr_button_panel.add(filter_incompletes_button); filter_incompletes_button.setToolTipText(resources.getString("filter_incompletes_tooltip")); filter_incompletes_button.addActionListener(new FilterIncompletesListener()); p_board_frame.set_context_sensitive_help(this, "WindowObjectList_Nets"); } /** * Fills the list with the nets in the net list. */ protected void fill_list() { Nets nets = this.board_frame.board_panel.board_handling.get_routing_board().rules.nets; Net[] sorted_arr = new Net[nets.max_net_no()]; for (int i = 0; i < sorted_arr.length; ++i) { sorted_arr[i] = nets.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(sorted_arr.length, DEFAULT_TABLE_SIZE)); } protected void select_instances() { Object[] selected_nets = list.getSelectedValues(); if (selected_nets.length <= 0) { return; } int [] selected_net_numbers = new int[selected_nets.length]; for (int i = 0; i < selected_nets.length; ++i) { selected_net_numbers[i] = ((Net) selected_nets[i]).net_number; } board.RoutingBoard routing_board = board_frame.board_panel.board_handling.get_routing_board(); java.util.Set<board.Item> selected_items = new java.util.TreeSet<board.Item>(); java.util.Collection<board.Item> board_items = routing_board.get_items(); for (board.Item curr_item : board_items) { boolean item_matches = false; for (int curr_net_no : selected_net_numbers) { if (curr_item.contains_net(curr_net_no)) { item_matches = true; break; } } if (item_matches) { selected_items.add(curr_item); } } board_frame.board_panel.board_handling.select_items(selected_items); board_frame.board_panel.board_handling.zoom_selection(); } private final java.util.ResourceBundle resources; private class AssignClassListener implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent p_evt) { Object[] selected_nets = list.getSelectedValues(); if (selected_nets.length <= 0) { return; } rules.NetClasses net_classes = board_frame.board_panel.board_handling.get_routing_board().rules.net_classes; rules.NetClass [] class_arr = new rules.NetClass [net_classes.count()]; for(int i = 0; i < class_arr.length; ++i) { class_arr[i] = net_classes.get(i); } Object selected_value = javax.swing.JOptionPane.showInputDialog(null, resources.getString("message_1"), resources.getString("message_2"), javax.swing.JOptionPane.INFORMATION_MESSAGE, null, class_arr, class_arr[0]); if (!(selected_value instanceof rules.NetClass)) { return; } rules.NetClass selected_class = (rules.NetClass) selected_value; for (int i = 0; i < selected_nets.length; ++i) { ((Net) selected_nets[i]).set_class(selected_class); } board_frame.refresh_windows(); } } private class FilterIncompletesListener implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent p_evt) { Object[] selected_nets = list.getSelectedValues(); if (selected_nets.length <= 0) { return; } interactive.BoardHandling board_handling = board_frame.board_panel.board_handling; int max_net_no = board_handling.get_routing_board().rules.nets.max_net_no(); for (int i = 1; i <= max_net_no; ++i) { board_handling.set_incompletes_filter(i, true); } for (int i = 0; i < selected_nets.length; ++i) { board_handling.set_incompletes_filter(((Net) selected_nets[i]).net_number, false); } board_frame.board_panel.repaint(); } } }