1 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 S_SIGN_JARS = "signJAR"; private static final String S_KEYSTORE = "keystore"; private static final String S_ALIAS = "alias"; private static final String S_PASSWORD = "password"; 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 path = fKeystoreText.getText(); 86 if (path.trim().length() == 0) 87 path = PDEPlugin.getWorkspace().getRoot().getLocation().toString(); 88 dialog.setFileName(path); 89 String 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 getString(IDialogSettings settings, String key) { 117 String value = settings.get(key); 118 return value == null ? "" : value; } 120 121 protected Label createLabel(Composite group, String 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 validate() { 144 String 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 [] getSigningInfo() { 175 if (fButton.getSelection()) { 176 return new String [] { 177 fAliasText.getText().trim(), 178 fKeystoreText.getText().trim(), 179 fPasswordText.getText().trim() }; 180 } 181 return null; 182 } 183 } 184 | Popular Tags |