KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > pde > internal > ui > wizards > exports > JARSigningTab


1 /*******************************************************************************
2  * Copyright (c) 2005, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.pde.internal.ui.wizards.exports;
12
13 import org.eclipse.jface.dialogs.Dialog;
14 import org.eclipse.jface.dialogs.IDialogSettings;
15 import org.eclipse.pde.internal.ui.IHelpContextIds;
16 import org.eclipse.pde.internal.ui.PDEPlugin;
17 import org.eclipse.pde.internal.ui.PDEUIMessages;
18 import org.eclipse.pde.internal.ui.util.SWTUtil;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.events.ModifyEvent;
21 import org.eclipse.swt.events.ModifyListener;
22 import org.eclipse.swt.events.SelectionAdapter;
23 import org.eclipse.swt.events.SelectionEvent;
24 import org.eclipse.swt.layout.GridData;
25 import org.eclipse.swt.layout.GridLayout;
26 import org.eclipse.swt.widgets.Button;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Control;
29 import org.eclipse.swt.widgets.FileDialog;
30 import org.eclipse.swt.widgets.Label;
31 import org.eclipse.swt.widgets.Text;
32 import org.eclipse.ui.PlatformUI;
33
34 public class JARSigningTab {
35
36     private static final String JavaDoc S_SIGN_JARS = "signJAR"; //$NON-NLS-1$
37
private static final String JavaDoc S_KEYSTORE = "keystore"; //$NON-NLS-1$
38
private static final String JavaDoc S_ALIAS = "alias"; //$NON-NLS-1$
39
private static final String JavaDoc S_PASSWORD = "password"; //$NON-NLS-1$
40

41     private Button fButton;
42     
43     private Label fKeystoreLabel;
44     private Text fKeystoreText;
45     
46     private Label fAliasLabel;
47     private Text fAliasText;
48     
49     private Label fPasswordLabel;
50     private Text fPasswordText;
51     private BaseExportWizardPage fPage;
52     private Button fBrowseButton;
53     
54     public JARSigningTab(BaseExportWizardPage page) {
55         fPage = page;
56     }
57
58     public Control createControl(Composite parent) {
59         Composite comp = new Composite(parent, SWT.NONE);
60         comp.setLayout(new GridLayout(3, false));
61         comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
62         
63         fButton = new Button(comp, SWT.CHECK);
64         fButton.setText(PDEUIMessages.AdvancedPluginExportPage_signButton);
65         GridData gd = new GridData();
66         gd.horizontalSpan = 3;
67         fButton.setLayoutData(gd);
68         fButton.addSelectionListener(new SelectionAdapter() {
69             public void widgetSelected(SelectionEvent e) {
70                 updateGroup(fButton.getSelection());
71                 fPage.pageChanged();
72             }
73         });
74         
75         fKeystoreLabel = createLabel(comp, PDEUIMessages.AdvancedPluginExportPage_keystore);
76         fKeystoreText = createText(comp, 1);
77         
78         fBrowseButton = new Button(comp, SWT.PUSH);
79         fBrowseButton.setText(PDEUIMessages.ExportWizard_browse);
80         fBrowseButton.setLayoutData(new GridData());
81         SWTUtil.setButtonDimensionHint(fBrowseButton);
82         fBrowseButton.addSelectionListener(new SelectionAdapter() {
83             public void widgetSelected(SelectionEvent e) {
84                 FileDialog dialog = new FileDialog(fPage.getShell(), SWT.OPEN);
85                 String JavaDoc path = fKeystoreText.getText();
86                 if (path.trim().length() == 0)
87                     path = PDEPlugin.getWorkspace().getRoot().getLocation().toString();
88                 dialog.setFileName(path);
89                 String JavaDoc res = dialog.open();
90                 if (res != null) {
91                     fKeystoreText.setText(res);
92                 }
93             }
94         });
95         
96         fAliasLabel = createLabel(comp, PDEUIMessages.AdvancedPluginExportPage_alias);
97         fAliasText = createText(comp, 2);
98         
99         fPasswordLabel = createLabel(comp, PDEUIMessages.AdvancedPluginExportPage_password);
100         fPasswordText = createText(comp, 2);
101         fPasswordText.setEchoChar('*');
102         
103         Dialog.applyDialogFont(comp);
104         PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, IHelpContextIds.ADVANCED_PLUGIN_EXPORT);
105         return comp;
106     }
107     
108     protected void initialize(IDialogSettings settings) {
109         fKeystoreText.setText(getString(settings, S_KEYSTORE));
110         fAliasText.setText(getString(settings, S_ALIAS));
111         fPasswordText.setText(getString(settings, S_PASSWORD));
112         fButton.setSelection(settings.getBoolean(S_SIGN_JARS));
113         updateGroup(fButton.getSelection());
114     }
115     
116     private String JavaDoc getString(IDialogSettings settings, String JavaDoc key) {
117         String JavaDoc value = settings.get(key);
118         return value == null ? "" : value; //$NON-NLS-1$
119
}
120     
121     protected Label createLabel(Composite group, String JavaDoc text) {
122         Label label = new Label(group, SWT.NONE);
123         label.setText(text);
124         GridData gd = new GridData();
125         gd.horizontalIndent = 15;
126         label.setLayoutData(gd);
127         return label;
128     }
129     
130     protected Text createText(Composite group, int span) {
131         Text text = new Text(group, SWT.SINGLE|SWT.BORDER);
132         GridData gd = new GridData(GridData.FILL_HORIZONTAL);
133         gd.horizontalSpan = span;
134         text.setLayoutData(gd);
135         text.addModifyListener(new ModifyListener() {
136             public void modifyText(ModifyEvent e) {
137                 fPage.pageChanged();
138             }
139         });
140         return text;
141     }
142     
143     protected String JavaDoc validate() {
144         String JavaDoc error = null;
145         if (fButton.getSelection()) {
146             if (fKeystoreText.getText().trim().length() == 0) {
147                 error = PDEUIMessages.AdvancedPluginExportPage_noKeystore;
148             } else if (fAliasText.getText().trim().length() == 0) {
149                 error = PDEUIMessages.AdvancedPluginExportPage_noAlias;
150             } else if (fPasswordText.getText().trim().length() == 0) {
151                 error = PDEUIMessages.AdvancedPluginExportPage_noPassword;
152             }
153         }
154         return error;
155     }
156     
157     private void updateGroup(boolean enabled) {
158         fKeystoreLabel.setEnabled(enabled);
159         fKeystoreText.setEnabled(enabled);
160         fBrowseButton.setEnabled(enabled);
161         fAliasLabel.setEnabled(enabled);
162         fAliasText.setEnabled(enabled);
163         fPasswordLabel.setEnabled(enabled);
164         fPasswordText.setEnabled(enabled);
165     }
166     
167     protected void saveSettings(IDialogSettings settings) {
168         settings.put(S_SIGN_JARS, fButton.getSelection());
169         settings.put(S_KEYSTORE, fKeystoreText.getText().trim());
170         settings.put(S_ALIAS, fAliasText.getText().trim());
171         settings.put(S_PASSWORD, fPasswordText.getText().trim());
172     }
173     
174     protected String JavaDoc[] getSigningInfo() {
175         if (fButton.getSelection()) {
176             return new String JavaDoc[] {
177                     fAliasText.getText().trim(),
178                     fKeystoreText.getText().trim(),
179                     fPasswordText.getText().trim() };
180         }
181         return null;
182     }
183 }
184
Popular Tags