Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java')
-rw-r--r--bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java321
1 files changed, 319 insertions, 2 deletions
diff --git a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java b/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
index d3c371688..1945516f2 100644
--- a/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
+++ b/bundles/org.eclipse.jsch.ui/src/org/eclipse/jsch/internal/ui/preference/PreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -146,6 +146,14 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
tabItem=new TabItem(tabFolder, SWT.NONE);
tabItem.setText(Messages.CVSSSH2PreferencePage_137);
tabItem.setControl(createPreferredAuthenticationPage(tabFolder));
+
+ tabItem=new TabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_144);
+ tabItem.setControl(createPreferredKeyExchangePage(tabFolder));
+
+ tabItem=new TabItem(tabFolder, SWT.NONE);
+ tabItem.setText(Messages.CVSSSH2PreferencePage_145);
+ tabItem.setControl(createPreferredMACPage(tabFolder));
initControls();
@@ -807,10 +815,15 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
private Button removeHostKeyButton;
Table preferedAuthMethodTable;
+ Table preferedKeyExchangeMethodTable;
+ Table preferedMACMethodTable;
Button up;
-
Button down;
+ Button kex_up;
+ Button kex_down;
+ Button mac_up;
+ Button mac_down;
class TableLabelProvider extends LabelProvider implements ITableLabelProvider{
public String getColumnText(Object element, int columnIndex){
@@ -1063,7 +1076,259 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
}
}
}
+
+ private Control createPreferredKeyExchangePage(Composite parent){
+ Composite root = new Composite(parent, SWT.NONE);
+ GridLayout layout=new GridLayout();
+ layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ layout.numColumns = 2;
+ root.setLayout(layout);
+
+ Label label=new Label(root, SWT.NONE);
+ GridData textLayoutData=new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false);
+ textLayoutData.horizontalSpan = 2;
+ label.setLayoutData(textLayoutData);
+ label.setText(Messages.CVSSSH2PreferencePage_140);
+
+ preferedKeyExchangeMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
+ layoutData.verticalSpan = 3;
+ preferedKeyExchangeMethodTable.setLayoutData(layoutData);
+ layoutData.minimumHeight = 150;
+ layoutData.minimumWidth = 200;
+ populateAuthMethods();
+
+ kex_up=new Button(root, SWT.PUSH);
+ kex_up.setText(Messages.CVSSSH2PreferencePage_2);
+ kex_up.setEnabled(false);
+ setButtonLayoutData(kex_up);
+
+ kex_down=new Button(root, SWT.PUSH);
+ kex_down.setText(Messages.CVSSSH2PreferencePage_3);
+ kex_down.setEnabled(false);
+ setButtonLayoutData(kex_down);
+
+ preferedKeyExchangeMethodTable.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ boolean anySelected = false;
+ for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
+ anySelected |= preferedKeyExchangeMethodTable.getItem(i).getChecked();
+ }
+
+ if(anySelected){
+ setErrorMessage(null);
+ setValid(true);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_142);
+ setValid(false);
+ }
+ kex_up.setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()>0);
+ kex_down
+ .setEnabled(preferedKeyExchangeMethodTable.getSelectionIndex()<preferedKeyExchangeMethodTable
+ .getItemCount()-1);
+ }
+
+ });
+ kex_up.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
+ if(selectedIndex == 1){ //this is the last possible swap
+ kex_up.setEnabled(false);
+ }
+ kex_down.setEnabled(true);
+ TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedKeyExchangeMethodTable.getItem(selectedIndex-1);
+
+ //switch text
+ String stemp = targetItem.getText();
+ targetItem.setText(sourceItem.getText());
+ sourceItem.setText(stemp);
+
+ //switch selection
+ boolean btemp = targetItem.getChecked();
+ targetItem.setChecked(sourceItem.getChecked());
+ sourceItem.setChecked(btemp);
+
+ preferedKeyExchangeMethodTable.setSelection(targetItem);
+ }
+ });
+
+ kex_down.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedKeyExchangeMethodTable.getSelectionIndex();
+ if(selectedIndex == preferedKeyExchangeMethodTable.getItemCount()-2){ //this is the last possible swap
+ kex_down.setEnabled(false);
+ }
+ kex_up.setEnabled(true);
+ TableItem sourceItem = preferedKeyExchangeMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedKeyExchangeMethodTable.getItem(selectedIndex+1);
+
+ //switch text
+ String stemp = targetItem.getText();
+ targetItem.setText(sourceItem.getText());
+ sourceItem.setText(stemp);
+
+ //switch selection
+ boolean btemp = targetItem.getChecked();
+ targetItem.setChecked(sourceItem.getChecked());
+ sourceItem.setChecked(btemp);
+
+ preferedKeyExchangeMethodTable.setSelection(targetItem);
+ }
+ });
+
+ return root;
+ }
+
+ private void populateKeyExchangeMethods(){
+ preferedKeyExchangeMethodTable.removeAll();
+ String[] methods = Utils.getEnabledPreferredKEXMethods().split(","); //$NON-NLS-1$
+ Set smethods = new HashSet(Arrays.asList(methods));
+
+ String[] order = Utils.getKEXMethodsOrder().split(","); //$NON-NLS-1$
+
+ for(int i=0; i<order.length; i++){
+ TableItem tableItem= new TableItem(preferedKeyExchangeMethodTable, SWT.NONE);
+ tableItem.setText(0, order[i]);
+ if(smethods.contains(order[i])){
+ tableItem.setChecked(true);
+ }
+ }
+ }
+
+ private Control createPreferredMACPage(Composite parent){
+ Composite root = new Composite(parent, SWT.NONE);
+ GridLayout layout=new GridLayout();
+ layout.marginHeight=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
+ layout.marginWidth=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
+ layout.verticalSpacing=convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
+ layout.horizontalSpacing=convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
+ layout.numColumns = 2;
+ root.setLayout(layout);
+
+ Label label=new Label(root, SWT.NONE);
+ GridData textLayoutData=new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false);
+ textLayoutData.horizontalSpan = 2;
+ label.setLayoutData(textLayoutData);
+ label.setText(Messages.CVSSSH2PreferencePage_141);
+
+ preferedMACMethodTable=new Table(root, SWT.CHECK | SWT.BORDER);
+ GridData layoutData=new GridData(SWT.FILL, SWT.BEGINNING, true, true);
+ layoutData.verticalSpan = 3;
+ preferedMACMethodTable.setLayoutData(layoutData);
+ layoutData.minimumHeight = 150;
+ layoutData.minimumWidth = 200;
+ populateMACMethods();
+
+ mac_up=new Button(root, SWT.PUSH);
+ mac_up.setText(Messages.CVSSSH2PreferencePage_2);
+ mac_up.setEnabled(false);
+ setButtonLayoutData(mac_up);
+
+ mac_down=new Button(root, SWT.PUSH);
+ mac_down.setText(Messages.CVSSSH2PreferencePage_3);
+ mac_down.setEnabled(false);
+ setButtonLayoutData(mac_down);
+
+ preferedMACMethodTable.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ boolean anySelected = false;
+ for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
+ anySelected |= preferedMACMethodTable.getItem(i).getChecked();
+ }
+
+ if(anySelected){
+ setErrorMessage(null);
+ setValid(true);
+ }
+ else{
+ setErrorMessage(Messages.CVSSSH2PreferencePage_143);
+ setValid(false);
+ }
+ mac_up.setEnabled(preferedMACMethodTable.getSelectionIndex()>0);
+ mac_down
+ .setEnabled(preferedMACMethodTable.getSelectionIndex()<preferedMACMethodTable
+ .getItemCount()-1);
+ }
+
+ });
+ mac_up.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedMACMethodTable.getSelectionIndex();
+ if(selectedIndex == 1){ //this is the last possible swap
+ mac_up.setEnabled(false);
+ }
+ mac_down.setEnabled(true);
+ TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedMACMethodTable.getItem(selectedIndex-1);
+
+ //switch text
+ String stemp = targetItem.getText();
+ targetItem.setText(sourceItem.getText());
+ sourceItem.setText(stemp);
+
+ //switch selection
+ boolean btemp = targetItem.getChecked();
+ targetItem.setChecked(sourceItem.getChecked());
+ sourceItem.setChecked(btemp);
+
+ preferedMACMethodTable.setSelection(targetItem);
+ }
+ });
+
+ mac_down.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent e){
+ int selectedIndex=preferedMACMethodTable.getSelectionIndex();
+ if(selectedIndex == preferedMACMethodTable.getItemCount()-2){ //this is the last possible swap
+ mac_down.setEnabled(false);
+ }
+ mac_up.setEnabled(true);
+ TableItem sourceItem = preferedMACMethodTable.getItem(selectedIndex);
+ TableItem targetItem = preferedMACMethodTable.getItem(selectedIndex+1);
+
+ //switch text
+ String stemp = targetItem.getText();
+ targetItem.setText(sourceItem.getText());
+ sourceItem.setText(stemp);
+
+ //switch selection
+ boolean btemp = targetItem.getChecked();
+ targetItem.setChecked(sourceItem.getChecked());
+ sourceItem.setChecked(btemp);
+
+ preferedMACMethodTable.setSelection(targetItem);
+ }
+ });
+
+ return root;
+ }
+ private void populateMACMethods(){
+ preferedMACMethodTable.removeAll();
+ String[] methods = Utils.getEnabledPreferredMACMethods().split(","); //$NON-NLS-1$
+ Set smethods = new HashSet(Arrays.asList(methods));
+
+ String[] order = Utils.getMACMethodsOrder().split(","); //$NON-NLS-1$
+
+ for(int i=0; i<order.length; i++){
+ TableItem tableItem= new TableItem(preferedMACMethodTable, SWT.NONE);
+ tableItem.setText(0, order[i]);
+ if(smethods.contains(order[i])){
+ tableItem.setChecked(true);
+ }
+ }
+ }
+
void handleSelection(){
boolean empty=viewer.getSelection().isEmpty();
removeHostKeyButton.setEnabled(!empty);
@@ -1177,8 +1442,14 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
keyExport.setEnabled(enable);
saveKeyPair.setEnabled(enable);
populateAuthMethods();
+ populateKeyExchangeMethods();
+ populateMACMethods();
up.setEnabled(false);
down.setEnabled(false);
+ kex_up.setEnabled(false);
+ kex_down.setEnabled(false);
+ mac_up.setEnabled(false);
+ mac_down.setEnabled(false);
}
public void init(IWorkbench workbench){
@@ -1202,6 +1473,8 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
public boolean performOk(){
boolean result=super.performOk();
storeAuthenticationMethodSettings();
+ storeKeyExchangeMethodSettings();
+ storeMACMethodSettings();
if(result){
setErrorMessage(null);
String home=ssh2HomeText.getText();
@@ -1251,6 +1524,50 @@ public class PreferencePage extends org.eclipse.jface.preference.PreferencePage
}
Utils.setEnabledPreferredAuthMethods(selected, order);
}
+
+ private void storeKeyExchangeMethodSettings(){
+ String selected = null;
+ String order = null;
+ for(int i = 0; i < preferedKeyExchangeMethodTable.getItemCount(); i++){
+ TableItem item=preferedKeyExchangeMethodTable.getItem(i);
+ if(item.getChecked()){
+ if(selected==null){
+ selected=item.getText();
+ }
+ else{
+ selected+=","+item.getText(); //$NON-NLS-1$
+ }
+ }
+ if(order == null){
+ order = item.getText();
+ } else {
+ order += "," + item.getText(); //$NON-NLS-1$
+ }
+ }
+ Utils.setEnabledPreferredKEXMethods(selected, order);
+ }
+
+ private void storeMACMethodSettings(){
+ String selected = null;
+ String order = null;
+ for(int i = 0; i < preferedMACMethodTable.getItemCount(); i++){
+ TableItem item=preferedMACMethodTable.getItem(i);
+ if(item.getChecked()){
+ if(selected==null){
+ selected=item.getText();
+ }
+ else{
+ selected+=","+item.getText(); //$NON-NLS-1$
+ }
+ }
+ if(order == null){
+ order = item.getText();
+ } else {
+ order += "," + item.getText(); //$NON-NLS-1$
+ }
+ }
+ Utils.setEnabledPreferredMACMethods(selected, order);
+ }
public void performApply(){
performOk();

Back to the top