|
Lines 12-41
Link Here
|
| 12 |
*******************************************************************************/ |
12 |
*******************************************************************************/ |
| 13 |
package org.eclipse.jsch.internal.ui.preference; |
13 |
package org.eclipse.jsch.internal.ui.preference; |
| 14 |
|
14 |
|
| 15 |
import java.io.*; |
15 |
import java.io.ByteArrayInputStream; |
|
|
16 |
import java.io.ByteArrayOutputStream; |
| 17 |
import java.io.File; |
| 18 |
import java.io.IOException; |
| 19 |
import java.util.Arrays; |
| 20 |
import java.util.HashSet; |
| 16 |
import java.util.Iterator; |
21 |
import java.util.Iterator; |
|
|
22 |
import java.util.Set; |
| 17 |
|
23 |
|
| 18 |
import org.eclipse.core.runtime.*; |
24 |
import org.eclipse.core.runtime.NullProgressMonitor; |
| 19 |
import org.eclipse.jface.dialogs.*; |
25 |
import org.eclipse.core.runtime.Preferences; |
| 20 |
import org.eclipse.jface.dialogs.Dialog; |
26 |
import org.eclipse.jface.dialogs.Dialog; |
| 21 |
import org.eclipse.jface.viewers.*; |
27 |
import org.eclipse.jface.dialogs.IDialogConstants; |
|
|
28 |
import org.eclipse.jface.dialogs.MessageDialog; |
| 29 |
import org.eclipse.jface.viewers.ColumnWeightData; |
| 30 |
import org.eclipse.jface.viewers.IStructuredContentProvider; |
| 31 |
import org.eclipse.jface.viewers.IStructuredSelection; |
| 32 |
import org.eclipse.jface.viewers.ITableLabelProvider; |
| 33 |
import org.eclipse.jface.viewers.LabelProvider; |
| 34 |
import org.eclipse.jface.viewers.TableLayout; |
| 35 |
import org.eclipse.jface.viewers.TableViewer; |
| 36 |
import org.eclipse.jface.viewers.Viewer; |
| 22 |
import org.eclipse.jsch.core.IJSchLocation; |
37 |
import org.eclipse.jsch.core.IJSchLocation; |
| 23 |
import org.eclipse.jsch.core.IJSchService; |
38 |
import org.eclipse.jsch.core.IJSchService; |
| 24 |
import org.eclipse.jsch.internal.core.*; |
39 |
import org.eclipse.jsch.internal.core.IConstants; |
|
|
40 |
import org.eclipse.jsch.internal.core.JSchCorePlugin; |
| 41 |
import org.eclipse.jsch.internal.core.Utils; |
| 25 |
import org.eclipse.jsch.internal.ui.JSchUIPlugin; |
42 |
import org.eclipse.jsch.internal.ui.JSchUIPlugin; |
| 26 |
import org.eclipse.jsch.internal.ui.Messages; |
43 |
import org.eclipse.jsch.internal.ui.Messages; |
| 27 |
import org.eclipse.osgi.util.NLS; |
44 |
import org.eclipse.osgi.util.NLS; |
| 28 |
import org.eclipse.swt.SWT; |
45 |
import org.eclipse.swt.SWT; |
| 29 |
import org.eclipse.swt.custom.BusyIndicator; |
46 |
import org.eclipse.swt.custom.BusyIndicator; |
| 30 |
import org.eclipse.swt.custom.TableEditor; |
47 |
import org.eclipse.swt.custom.TableEditor; |
| 31 |
import org.eclipse.swt.events.*; |
48 |
import org.eclipse.swt.events.FocusEvent; |
|
|
49 |
import org.eclipse.swt.events.FocusListener; |
| 50 |
import org.eclipse.swt.events.ModifyEvent; |
| 51 |
import org.eclipse.swt.events.ModifyListener; |
| 52 |
import org.eclipse.swt.events.SelectionAdapter; |
| 53 |
import org.eclipse.swt.events.SelectionEvent; |
| 32 |
import org.eclipse.swt.graphics.Image; |
54 |
import org.eclipse.swt.graphics.Image; |
| 33 |
import org.eclipse.swt.layout.GridData; |
55 |
import org.eclipse.swt.layout.GridData; |
| 34 |
import org.eclipse.swt.layout.GridLayout; |
56 |
import org.eclipse.swt.layout.GridLayout; |
| 35 |
import org.eclipse.swt.widgets.*; |
57 |
import org.eclipse.swt.widgets.Button; |
| 36 |
import org.eclipse.ui.*; |
58 |
import org.eclipse.swt.widgets.Composite; |
| 37 |
|
59 |
import org.eclipse.swt.widgets.Control; |
| 38 |
import com.jcraft.jsch.*; |
60 |
import org.eclipse.swt.widgets.DirectoryDialog; |
|
|
61 |
import org.eclipse.swt.widgets.Display; |
| 62 |
import org.eclipse.swt.widgets.Event; |
| 63 |
import org.eclipse.swt.widgets.FileDialog; |
| 64 |
import org.eclipse.swt.widgets.Label; |
| 65 |
import org.eclipse.swt.widgets.Listener; |
| 66 |
import org.eclipse.swt.widgets.Shell; |
| 67 |
import org.eclipse.swt.widgets.TabFolder; |
| 68 |
import org.eclipse.swt.widgets.TabItem; |
| 69 |
import org.eclipse.swt.widgets.Table; |
| 70 |
import org.eclipse.swt.widgets.TableColumn; |
| 71 |
import org.eclipse.swt.widgets.TableItem; |
| 72 |
import org.eclipse.swt.widgets.Text; |
| 73 |
import org.eclipse.ui.IWorkbench; |
| 74 |
import org.eclipse.ui.IWorkbenchPreferencePage; |
| 75 |
import org.eclipse.ui.PlatformUI; |
| 76 |
|
| 77 |
import com.jcraft.jsch.Channel; |
| 78 |
import com.jcraft.jsch.ChannelSftp; |
| 79 |
import com.jcraft.jsch.HostKey; |
| 80 |
import com.jcraft.jsch.HostKeyRepository; |
| 81 |
import com.jcraft.jsch.JSch; |
| 82 |
import com.jcraft.jsch.JSchException; |
| 83 |
import com.jcraft.jsch.KeyPair; |
| 84 |
import com.jcraft.jsch.Session; |
| 85 |
import com.jcraft.jsch.SftpATTRS; |
| 86 |
import com.jcraft.jsch.SftpException; |
| 39 |
|
87 |
|
| 40 |
public class PreferencePage extends org.eclipse.jface.preference.PreferencePage |
88 |
public class PreferencePage extends org.eclipse.jface.preference.PreferencePage |
| 41 |
implements IWorkbenchPreferencePage{ |
89 |
implements IWorkbenchPreferencePage{ |
|
Lines 93-98
Link Here
|
| 93 |
tabItem=new TabItem(tabFolder, SWT.NONE); |
141 |
tabItem=new TabItem(tabFolder, SWT.NONE); |
| 94 |
tabItem.setText(Messages.CVSSSH2PreferencePage_133); |
142 |
tabItem.setText(Messages.CVSSSH2PreferencePage_133); |
| 95 |
tabItem.setControl(createHostKeyManagementPage(tabFolder)); |
143 |
tabItem.setControl(createHostKeyManagementPage(tabFolder)); |
|
|
144 |
|
| 145 |
tabItem=new TabItem(tabFolder, SWT.NONE); |
| 146 |
tabItem.setText(Messages.CVSSSH2PreferencePage_137); |
| 147 |
tabItem.setControl(createPreferredAuthenticationPage(tabFolder)); |
| 96 |
|
148 |
|
| 97 |
initControls(); |
149 |
initControls(); |
| 98 |
|
150 |
|
|
Lines 715-720
Link Here
|
| 715 |
private TableViewer viewer; |
767 |
private TableViewer viewer; |
| 716 |
private Button removeHostKeyButton; |
768 |
private Button removeHostKeyButton; |
| 717 |
|
769 |
|
|
|
770 |
private Table preferedAuthMethodTable; |
| 771 |
|
| 718 |
class TableLabelProvider extends LabelProvider implements ITableLabelProvider{ |
772 |
class TableLabelProvider extends LabelProvider implements ITableLabelProvider{ |
| 719 |
public String getColumnText(Object element, int columnIndex){ |
773 |
public String getColumnText(Object element, int columnIndex){ |
| 720 |
HostKey entry=(HostKey)element; |
774 |
HostKey entry=(HostKey)element; |
|
Lines 840-845
Link Here
|
| 840 |
|
894 |
|
| 841 |
return group; |
895 |
return group; |
| 842 |
} |
896 |
} |
|
|
897 |
|
| 898 |
private Control createPreferredAuthenticationPage(Composite parent){ |
| 899 |
Composite root = new Composite(parent, SWT.NONE); |
| 900 |
GridLayout layout=new GridLayout(); |
| 901 |
layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); |
| 902 |
layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); |
| 903 |
layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); |
| 904 |
layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); |
| 905 |
root.setLayout(layout); |
| 906 |
|
| 907 |
Label label=new Label(root, SWT.NONE); |
| 908 |
label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false)); |
| 909 |
label.setText("Select preferred authentication methods"); //$NON-NLS-1$ |
| 910 |
|
| 911 |
preferedAuthMethodTable=new Table(root, SWT.CHECK | SWT.BORDER); |
| 912 |
GridData layoutData=new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false); |
| 913 |
preferedAuthMethodTable.setLayoutData(layoutData); |
| 914 |
layoutData.minimumHeight = 150; |
| 915 |
layoutData.minimumWidth = 200; |
| 916 |
String[] methods = Utils.getEnabledPreferredAuthMethods().split(","); //$NON-NLS-1$ |
| 917 |
Set smethods = new HashSet(Arrays.asList(methods)); |
| 918 |
|
| 919 |
for(int i=0; i<Utils.PREFERRED_AUTH_METHODS.length; i++){ |
| 920 |
TableItem tableItem= new TableItem(preferedAuthMethodTable, SWT.NONE); |
| 921 |
tableItem.setText(0, Utils.PREFERRED_AUTH_METHODS[i]); |
| 922 |
if(smethods.contains(Utils.PREFERRED_AUTH_METHODS[i])){ |
| 923 |
tableItem.setChecked(true); |
| 924 |
} |
| 925 |
} |
| 926 |
preferedAuthMethodTable.addSelectionListener(new SelectionAdapter(){ |
| 927 |
|
| 928 |
public void widgetSelected(SelectionEvent e){ |
| 929 |
boolean anySelected = false; |
| 930 |
for(int i = 0; i < preferedAuthMethodTable.getItemCount(); i++){ |
| 931 |
anySelected |= preferedAuthMethodTable.getItem(i).getChecked(); |
| 932 |
} |
| 933 |
|
| 934 |
if(anySelected){ |
| 935 |
setErrorMessage(null); |
| 936 |
setValid(true); |
| 937 |
} |
| 938 |
else{ |
| 939 |
setErrorMessage("You must select at least one authentication method."); //$NON-NLS-1$ |
| 940 |
setValid(false); |
| 941 |
} |
| 942 |
} |
| 943 |
}); |
| 944 |
|
| 945 |
return root; |
| 946 |
} |
| 843 |
|
947 |
|
| 844 |
void handleSelection(){ |
948 |
void handleSelection(){ |
| 845 |
boolean empty=viewer.getSelection().isEmpty(); |
949 |
boolean empty=viewer.getSelection().isEmpty(); |
|
Lines 975-980
Link Here
|
| 975 |
|
1079 |
|
| 976 |
public boolean performOk(){ |
1080 |
public boolean performOk(){ |
| 977 |
boolean result=super.performOk(); |
1081 |
boolean result=super.performOk(); |
|
|
1082 |
String selected = null; |
| 1083 |
for(int i = 0; i < preferedAuthMethodTable.getItemCount(); i++){ |
| 1084 |
TableItem item=preferedAuthMethodTable.getItem(i); |
| 1085 |
if(item.getChecked()){ |
| 1086 |
if(selected==null){ |
| 1087 |
selected=item.getText(); |
| 1088 |
} |
| 1089 |
else{ |
| 1090 |
selected+=","+item.getText(); //$NON-NLS-1$ |
| 1091 |
} |
| 1092 |
} |
| 1093 |
} |
| 1094 |
Utils.setEnabledPreferredAuthMethods(selected); |
| 978 |
if(result){ |
1095 |
if(result){ |
| 979 |
setErrorMessage(null); |
1096 |
setErrorMessage(null); |
| 980 |
String home=ssh2HomeText.getText(); |
1097 |
String home=ssh2HomeText.getText(); |