KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > addressbook > gui > dialog > importfilter > PluginStep


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18

19 package org.columba.addressbook.gui.dialog.importfilter;
20
21 import java.awt.BorderLayout JavaDoc;
22 import java.awt.GridBagConstraints JavaDoc;
23 import java.awt.GridBagLayout JavaDoc;
24 import java.awt.Insets JavaDoc;
25 import java.lang.reflect.Method JavaDoc;
26
27 import javax.swing.JComponent JavaDoc;
28 import javax.swing.JList JavaDoc;
29 import javax.swing.JPanel JavaDoc;
30 import javax.swing.JScrollPane JavaDoc;
31 import javax.swing.event.ListSelectionEvent JavaDoc;
32 import javax.swing.event.ListSelectionListener JavaDoc;
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 JavaDoc {
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 JavaDoc createComponent() {
60         JList JavaDoc list = new JList JavaDoc(pluginHandler.getPluginIdList());
61         list.setCellRenderer(new PluginListCellRenderer());
62
63         descriptionLabel = new MultiLineLabel("description");
64
65         JComponent JavaDoc component = new JPanel JavaDoc(new BorderLayout JavaDoc());
66         component.setLayout(new BorderLayout JavaDoc(0, 30));
67         component.add(new MultiLineLabel(AddressbookResourceLoader.getString(
68                 "dialog", "addressbookimport", "plugin_text")),
69                 BorderLayout.NORTH);
70
71         JPanel JavaDoc middlePanel = new JPanel JavaDoc();
72         middlePanel.setAlignmentX(1);
73
74         GridBagLayout JavaDoc layout = new GridBagLayout JavaDoc();
75         middlePanel.setLayout(layout);
76
77         Method JavaDoc method = null;
78
79         try {
80             method = list.getClass().getMethod("getSelectedValue", null);
81         } catch (NoSuchMethodException JavaDoc 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 JavaDoc scrollPane = new JScrollPane JavaDoc(list);
90         scrollPane
91                 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
92
93         // scrollPane.setPreferredSize( new Dimension(200,200) );
94
GridBagConstraints JavaDoc c = new GridBagConstraints JavaDoc();
95         c.anchor = GridBagConstraints.NORTHWEST;
96         c.gridx = 0;
97         c.fill = GridBagConstraints.BOTH;
98         c.weightx = 0.4;
99
100         // c.gridwidth = GridBagConstraints.RELATIVE;
101
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 JavaDoc(0, 10, 0, 0);
110
111         JScrollPane JavaDoc scrollPane2 = new JScrollPane JavaDoc(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 JavaDoc event) {
123         try {
124             // adjust description field
125
IExtension extension = pluginHandler.getExtension((String JavaDoc) data
126                     .getData("Plugin.ID"));
127
128             DefaultAddressbookImporter importer = (DefaultAddressbookImporter) extension
129                     .instanciateExtension(null);
130
131             String JavaDoc description = importer.getDescription();
132             descriptionLabel.setText(description);
133         } catch (Exception JavaDoc e) {
134             e.printStackTrace();
135             ((JList JavaDoc) event.getSource()).clearSelection();
136         }
137     }
138
139     public void prepareRendering() {
140     }
141 }
142
Popular Tags