1 19 package org.columba.addressbook.gui.dialog.importfilter; 20 21 import java.awt.BorderLayout ; 22 import java.awt.GridBagConstraints ; 23 import java.awt.GridBagLayout ; 24 import java.awt.Insets ; 25 import java.lang.reflect.Method ; 26 27 import javax.swing.JComponent ; 28 import javax.swing.JList ; 29 import javax.swing.JPanel ; 30 import javax.swing.JScrollPane ; 31 import javax.swing.event.ListSelectionEvent ; 32 import javax.swing.event.ListSelectionListener ; 33 34 import net.javaprog.ui.wizard.AbstractStep; 35 import net.javaprog.ui.wizard.DataModel; 36 import net.javaprog.ui.wizard.DefaultDataLookup; 37 38 import org.columba.addressbook.folder.importfilter.DefaultAddressbookImporter; 39 import org.columba.addressbook.util.AddressbookResourceLoader; 40 import org.columba.api.plugin.IExtension; 41 import org.columba.api.plugin.IExtensionHandler; 42 import org.columba.core.gui.base.MultiLineLabel; 43 44 class PluginStep extends AbstractStep implements ListSelectionListener { 45 protected DataModel data; 46 47 private MultiLineLabel descriptionLabel; 48 49 private IExtensionHandler pluginHandler; 50 51 public PluginStep(DataModel data) { 52 super(AddressbookResourceLoader.getString("dialog", 53 "addressbookimport", "plugin"), AddressbookResourceLoader 54 .getString("dialog", "addressbookimport", "plugin_description")); 55 this.data = data; 56 pluginHandler = (IExtensionHandler) data.getData("Plugin.handler"); 57 } 58 59 protected JComponent createComponent() { 60 JList list = new JList (pluginHandler.getPluginIdList()); 61 list.setCellRenderer(new PluginListCellRenderer()); 62 63 descriptionLabel = new MultiLineLabel("description"); 64 65 JComponent component = new JPanel (new BorderLayout ()); 66 component.setLayout(new BorderLayout (0, 30)); 67 component.add(new MultiLineLabel(AddressbookResourceLoader.getString( 68 "dialog", "addressbookimport", "plugin_text")), 69 BorderLayout.NORTH); 70 71 JPanel middlePanel = new JPanel (); 72 middlePanel.setAlignmentX(1); 73 74 GridBagLayout layout = new GridBagLayout (); 75 middlePanel.setLayout(layout); 76 77 Method method = null; 78 79 try { 80 method = list.getClass().getMethod("getSelectedValue", null); 81 } catch (NoSuchMethodException nsme) { 82 } 83 84 data.registerDataLookup("Plugin.ID", new DefaultDataLookup(list, 85 method, null)); 86 list.addListSelectionListener(this); 87 list.setSelectedIndex(0); 88 89 JScrollPane scrollPane = new JScrollPane (list); 90 scrollPane 91 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 92 93 GridBagConstraints c = new GridBagConstraints (); 95 c.anchor = GridBagConstraints.NORTHWEST; 96 c.gridx = 0; 97 c.fill = GridBagConstraints.BOTH; 98 c.weightx = 0.4; 99 100 c.weighty = 1.0; 102 layout.setConstraints(scrollPane, c); 103 middlePanel.add(scrollPane); 104 105 c.gridwidth = GridBagConstraints.REMAINDER; 106 c.weightx = 0.6; 107 c.gridx = 1; 108 c.anchor = GridBagConstraints.NORTHWEST; 109 c.insets = new Insets (0, 10, 0, 0); 110 111 JScrollPane scrollPane2 = new JScrollPane (descriptionLabel); 112 113 scrollPane2 114 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 115 layout.setConstraints(scrollPane2, c); 116 middlePanel.add(scrollPane2); 117 component.add(middlePanel); 118 119 return component; 120 } 121 122 public void valueChanged(ListSelectionEvent event) { 123 try { 124 IExtension extension = pluginHandler.getExtension((String ) data 126 .getData("Plugin.ID")); 127 128 DefaultAddressbookImporter importer = (DefaultAddressbookImporter) extension 129 .instanciateExtension(null); 130 131 String description = importer.getDescription(); 132 descriptionLabel.setText(description); 133 } catch (Exception e) { 134 e.printStackTrace(); 135 ((JList ) event.getSource()).clearSelection(); 136 } 137 } 138 139 public void prepareRendering() { 140 } 141 } 142 | Popular Tags |