/** * author: Marcel Genzmehr * 04.11.2011 */ package org.freeplane.plugin.workspace.components.dialog; import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.AbstractListModel; import javax.swing.DefaultListCellRenderer; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.UIManager; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.ColumnSpec; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; /** * */ public class FolderImportDialogPanel extends JPanel implements ActionListener, ItemListener { private static final long serialVersionUID = 1L; private JRadioButton rbtnContentOnly; private JCheckBox chckbxIncludeSubdirectories; private JRadioButton rbtnCompleteStructure; private JCheckBox chckbxEnableDirectoryMonitoring; private JPanel panel; private JPanel panel_1; private JScrollPane scrollPane; private JList list; /*********************************************************************************** * CONSTRUCTORS **********************************************************************************/ public FolderImportDialogPanel() { FormLayout formLayout = new FormLayout(new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("default:grow"), FormFactory.RELATED_GAP_COLSPEC,}, new RowSpec[] { FormFactory.RELATED_GAP_ROWSPEC, FormFactory.PREF_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, RowSpec.decode("pref:grow"), FormFactory.RELATED_GAP_ROWSPEC,}); setLayout(formLayout); panel = new JPanel(); panel.setBorder(null); add(panel, "2, 6, fill, fill"); panel.setLayout(new FormLayout(new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("20dlu"), ColumnSpec.decode("pref:grow"), FormFactory.RELATED_GAP_COLSPEC,}, new RowSpec[] { RowSpec.decode("1dlu"), FormFactory.DEFAULT_ROWSPEC, FormFactory.MIN_ROWSPEC, RowSpec.decode("fill:default:grow"), FormFactory.RELATED_GAP_ROWSPEC,})); rbtnContentOnly = new JRadioButton("content only", false); panel.add(rbtnContentOnly, "2, 2, 2, 1"); chckbxIncludeSubdirectories = new JCheckBox("include subdirectories"); chckbxIncludeSubdirectories.setEnabled(false); panel.add(chckbxIncludeSubdirectories, "3, 3"); scrollPane = new JScrollPane(); scrollPane.setEnabled(false); panel.add(scrollPane, "3, 4, fill, default"); list = new JList(); list.setVisibleRowCount(3); list.setEnabled(false); list.setCellRenderer(new DefaultListCellRenderer() { private static final long serialVersionUID = 1L; public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if(value instanceof JLabel) { JLabel label = ((JLabel)value); if(isSelected) { label.setBackground(list.getSelectionBackground()); label.setForeground(list.getSelectionForeground()); } else { label.setBackground(list.getBackground()); label.setForeground(list.getForeground()); } label.setEnabled(list.isEnabled()); label.setFont(list.getFont()); Border border = null; if (cellHasFocus) { if (isSelected) { border = UIManager.getBorder("List.focusSelectedCellHighlightBorder"); } if (border == null) { border = UIManager.getBorder("List.focusCellHighlightBorder"); } } else { border = new BevelBorder(BevelBorder.LOWERED, Color.DARK_GRAY, list.getBackground(), Color.DARK_GRAY, list.getBackground()); } label.setBorder(border); label.getInsets().set(2, 2, 2, 2); return label; } return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); } }); list.setModel(new AbstractListModel() { private static final long serialVersionUID = 1L; JLabel[] values = new JLabel[] {new JLabel("test1"),new JLabel("test1"),new JLabel("test1"),new JLabel("test1"),new JLabel("test end")}; public int getSize() { return values.length; } public Object getElementAt(int index) { return values[index]; } }); scrollPane.setViewportView(list); scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED,Color.WHITE,Color.LIGHT_GRAY,null,null)); rbtnContentOnly.addActionListener(this); rbtnContentOnly.addItemListener(this); JSeparator separator = new JSeparator(); add(separator, "1, 4, 3, 1"); panel_1 = new JPanel(); add(panel_1, "2, 2, fill, fill"); panel_1.setLayout(new FormLayout(new ColumnSpec[] { FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("20dlu"), FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("min:grow"),}, new RowSpec[] { FormFactory.NARROW_LINE_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.NARROW_LINE_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,})); rbtnCompleteStructure = new JRadioButton("complete structure", true); panel_1.add(rbtnCompleteStructure, "2, 2, 3, 1, left, top"); chckbxEnableDirectoryMonitoring = new JCheckBox("enable directory monitoring"); panel_1.add(chckbxEnableDirectoryMonitoring, "4, 4, left, top"); chckbxEnableDirectoryMonitoring.setEnabled(true); rbtnCompleteStructure.addActionListener(this); rbtnCompleteStructure.addItemListener(this); } /*********************************************************************************** * METHODS **********************************************************************************/ public void actionPerformed(ActionEvent e) { if(e.getSource() == this.rbtnContentOnly) { if(this.rbtnContentOnly.isSelected()) { this.rbtnCompleteStructure.setSelected(false); } } else if(e.getSource() == this.rbtnCompleteStructure){ if(this.rbtnCompleteStructure.isSelected()) { this.rbtnContentOnly.setSelected(false); } } } public void itemStateChanged(ItemEvent e) { if(e.getSource() == rbtnContentOnly) { chckbxIncludeSubdirectories.setEnabled(rbtnContentOnly.isSelected()); scrollPane.setEnabled(rbtnContentOnly.isSelected()); list.setEnabled(rbtnContentOnly.isSelected()); } if(e.getSource() == rbtnCompleteStructure) { chckbxEnableDirectoryMonitoring.setEnabled(rbtnCompleteStructure.isSelected()); } } }