package icy.gui.inspector; import icy.gui.component.button.IcyButton; import icy.gui.inspector.RoisPanel.ColumnInfo; import icy.resource.ResourceUtil; import icy.resource.icon.IcyIcon; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class RoiSettingsPanel extends JPanel { private JScrollPane scrollPaneView; private JScrollPane scrollPaneExport; private JTable tableView; private JTable tableExport; private JPanel panelExportTop; private JPanel panelExportActions; private JLabel lblColumnSelectionFor; private JLabel lblNewLabel; private IcyButton upViewBtn; private IcyButton downViewBtn; private IcyButton upExportBtn; private IcyButton downExportBtn; private List<ColumnInfo> idsView; private List<ColumnInfo> idsExport; private TableModel viewModel; private TableModel exportModel; /** * Create the panel. */ public RoiSettingsPanel(List<ColumnInfo> idsView, List<ColumnInfo> idsExport) { super(); initialize(); viewModel = new AbstractTableModel() { @Override public Object getValueAt(int rowIndex, int columnIndex) { switch(columnIndex) { case 0: // name return RoiSettingsPanel.this.idsView.get(rowIndex).name; case 1: // visibility return RoiSettingsPanel.this.idsView.get(rowIndex).defVisible; } // TODO Auto-generated method stub return null; } @Override public int getRowCount() { // TODO Auto-generated method stub return 0; } @Override public int getColumnCount() { // TODO Auto-generated method stub return 0; } }; exportModel = new AbstractTableModel() { @Override public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return null; } @Override public int getRowCount() { // TODO Auto-generated method stub return 0; } @Override public int getColumnCount() { // TODO Auto-generated method stub return 0; } }; tableView.setModel(viewModel); tableExport.setModel(exportModel); upViewBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } }); // duplicate list so we can modify them this.idsView = new ArrayList<ColumnInfo>(idsView.size()); for (ColumnInfo inf : idsView) this.idsView.add(new ColumnInfo(inf)); this.idsExport = new ArrayList<ColumnInfo>(idsExport.size()); for (ColumnInfo inf : idsExport) this.idsExport.add(new ColumnInfo(inf)); } private void initialize() { setLayout(new BorderLayout(0, 0)); JSplitPane splitPane = new JSplitPane(); splitPane.setResizeWeight(0.5); add(splitPane, BorderLayout.CENTER); JPanel panelView = new JPanel(); splitPane.setLeftComponent(panelView); panelView.setLayout(new BorderLayout(0, 0)); scrollPaneView = new JScrollPane(); panelView.add(scrollPaneView, BorderLayout.CENTER); tableView = new JTable(); scrollPaneView.setViewportView(tableView); JPanel panelViewTop = new JPanel(); panelView.add(panelViewTop, BorderLayout.NORTH); GridBagLayout gbl_panelViewTop = new GridBagLayout(); gbl_panelViewTop.columnWidths = new int[] {0, 16, 0, 0, 0}; gbl_panelViewTop.rowHeights = new int[] {14, 0}; gbl_panelViewTop.columnWeights = new double[] {1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; gbl_panelViewTop.rowWeights = new double[] {0.0, Double.MIN_VALUE}; panelViewTop.setLayout(gbl_panelViewTop); lblColumnSelectionFor = new JLabel("Select columns to display in the ROI table"); GridBagConstraints gbc_lblColumnSelectionFor = new GridBagConstraints(); gbc_lblColumnSelectionFor.insets = new Insets(0, 0, 0, 5); gbc_lblColumnSelectionFor.fill = GridBagConstraints.HORIZONTAL; gbc_lblColumnSelectionFor.anchor = GridBagConstraints.NORTH; gbc_lblColumnSelectionFor.gridx = 0; gbc_lblColumnSelectionFor.gridy = 0; panelViewTop.add(lblColumnSelectionFor, gbc_lblColumnSelectionFor); upViewBtn = new IcyButton(new IcyIcon(ResourceUtil.ICON_ARROW_UP)); upViewBtn.setFlat(true); GridBagConstraints gbc_upViewBtn = new GridBagConstraints(); gbc_upViewBtn.insets = new Insets(0, 0, 0, 5); gbc_upViewBtn.gridx = 2; gbc_upViewBtn.gridy = 0; panelViewTop.add(upViewBtn, gbc_upViewBtn); downViewBtn = new IcyButton(new IcyIcon(ResourceUtil.ICON_ARROW_DOWN)); downViewBtn.setFlat(true); GridBagConstraints gbc_downViewBtn = new GridBagConstraints(); gbc_downViewBtn.gridx = 3; gbc_downViewBtn.gridy = 0; panelViewTop.add(downViewBtn, gbc_downViewBtn); JPanel panelViewActions = new JPanel(); panelView.add(panelViewActions, BorderLayout.EAST); JPanel panelExport = new JPanel(); splitPane.setRightComponent(panelExport); panelExport.setLayout(new BorderLayout(0, 0)); scrollPaneExport = new JScrollPane(); panelExport.add(scrollPaneExport, BorderLayout.CENTER); tableExport = new JTable(); scrollPaneExport.setViewportView(tableExport); panelExportTop = new JPanel(); panelExport.add(panelExportTop, BorderLayout.NORTH); GridBagLayout gbl_panelExportTop = new GridBagLayout(); gbl_panelExportTop.columnWidths = new int[] {0, 16, 0, 0, 0}; gbl_panelExportTop.rowHeights = new int[] {14, 0}; gbl_panelExportTop.columnWeights = new double[] {1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; gbl_panelExportTop.rowWeights = new double[] {0.0, Double.MIN_VALUE}; panelExportTop.setLayout(gbl_panelExportTop); lblNewLabel = new JLabel("Select the columns for the ROI export (XLS or CSV)"); GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5); gbc_lblNewLabel.fill = GridBagConstraints.HORIZONTAL; gbc_lblNewLabel.anchor = GridBagConstraints.NORTH; gbc_lblNewLabel.gridx = 0; gbc_lblNewLabel.gridy = 0; panelExportTop.add(lblNewLabel, gbc_lblNewLabel); upExportBtn = new IcyButton(new IcyIcon(ResourceUtil.ICON_ARROW_UP)); upExportBtn.setFlat(true); GridBagConstraints gbc_upExportBtn = new GridBagConstraints(); gbc_upExportBtn.insets = new Insets(0, 0, 0, 5); gbc_upExportBtn.gridx = 2; gbc_upExportBtn.gridy = 0; panelExportTop.add(upExportBtn, gbc_upExportBtn); downExportBtn = new IcyButton(new IcyIcon(ResourceUtil.ICON_ARROW_DOWN)); downExportBtn.setFlat(true); GridBagConstraints gbc_downExportBtn = new GridBagConstraints(); gbc_downExportBtn.gridx = 3; gbc_downExportBtn.gridy = 0; panelExportTop.add(downExportBtn, gbc_downExportBtn); panelExportActions = new JPanel(); panelExport.add(panelExportActions, BorderLayout.EAST); } public List<String> getIdsView() { return idsView; } public List<String> getIdsExport() { return idsExport; } }