From 0a6c7e26663bf0d1dc4be0ce8cd3ffc6eb143994 Mon Sep 17 00:00:00 2001 From: JJ Allaire Date: Fri, 25 Nov 2011 19:06:13 -0500 Subject: [PATCH] move view ssh key to options panel and eliminate tools -> vcs menu --- src/cpp/session/modules/SessionWorkbench.cpp | 3 +++ .../workbench/commands/Commands.cmd.xml | 8 +----- .../prefs/model/SourceControlPrefs.java | 6 +++++ .../prefs/views/PreferencesDialog.css | 5 ++-- .../views/PreferencesDialogResources.java | 2 +- .../views/SourceControlPreferencesPane.java | 26 +++++++++++++++++++ 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/cpp/session/modules/SessionWorkbench.cpp b/src/cpp/session/modules/SessionWorkbench.cpp index 347ffe3e73f..88257d4c30e 100644 --- a/src/cpp/session/modules/SessionWorkbench.cpp +++ b/src/cpp/session/modules/SessionWorkbench.cpp @@ -289,6 +289,9 @@ Error getRPrefs(const json::JsonRpcRequest& request, if (gitBinDir.empty()) gitBinDir = git::detectedGitBinDir(); sourceControlPrefs["git_bin_dir"] = gitBinDir.absolutePath(); + sourceControlPrefs["have_rsa_public_key"] = + modules::source_control::defaultSshKeyDir().childPath( + "id_rsa.pub").exists(); // initialize and set result object json::Object result; diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml index c19d6870e50..3cb6d100452 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml +++ b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml @@ -208,13 +208,7 @@ well as menu structures (for main menu and popup menus). - - - - - - - + diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/model/SourceControlPrefs.java b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/model/SourceControlPrefs.java index 89d09b3fca5..9cfb9c25dcd 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/model/SourceControlPrefs.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/model/SourceControlPrefs.java @@ -18,6 +18,8 @@ public class SourceControlPrefs extends JavaScriptObject { protected SourceControlPrefs() {} + // create source control prefs -- don't pass the have_rsa_public_key + // parameter because that is a read-only rider for the prefs ui public static final native SourceControlPrefs create(boolean vcsEnabled, String gitBinDir) /*-{ @@ -34,4 +36,8 @@ public native final boolean getVcsEnabled() /*-{ public native final String getGitBinDir() /*-{ return this.git_bin_dir; }-*/; + + public native final boolean haveRsaPublicKey() /*-{ + return this.have_rsa_public_key; + }-*/; } diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialog.css b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialog.css index 2a46010d84c..14099878276 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialog.css +++ b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialog.css @@ -10,8 +10,9 @@ margin-top: 30px; } -.usingVcsHelpNoSsh { - margin-top: 20px; +.viewSshKey { + padding-top: 20px; + margin-left: 2px; } .newSection { diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialogResources.java b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialogResources.java index 47019409520..a780c9fedd8 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialogResources.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/PreferencesDialogResources.java @@ -24,7 +24,7 @@ public interface Styles extends CssResource String paneLayoutTable(); String themeChooser(); String usingVcsHelp(); - String usingVcsHelpNoSsh(); + String viewSshKey(); String newSection(); String encodingChooser(); } diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/SourceControlPreferencesPane.java b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/SourceControlPreferencesPane.java index 63fef7b19fc..af76f912546 100644 --- a/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/SourceControlPreferencesPane.java +++ b/src/gwt/src/org/rstudio/studio/client/workbench/prefs/views/SourceControlPreferencesPane.java @@ -13,6 +13,8 @@ package org.rstudio.studio.client.workbench.prefs.views; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.resources.client.ImageResource; @@ -27,9 +29,11 @@ import org.rstudio.core.client.widget.HyperlinkLabel; import org.rstudio.core.client.widget.MessageDialog; import org.rstudio.core.client.widget.TextBoxWithButton; +import org.rstudio.core.client.widget.ThemedButton; import org.rstudio.studio.client.common.FileDialogs; import org.rstudio.studio.client.common.GlobalDisplay; import org.rstudio.studio.client.common.vcs.VCSHelpLink; +import org.rstudio.studio.client.workbench.commands.Commands; import org.rstudio.studio.client.workbench.model.RemoteFileSystemContext; import org.rstudio.studio.client.workbench.model.Session; import org.rstudio.studio.client.workbench.prefs.model.RPrefs; @@ -41,6 +45,7 @@ public class SourceControlPreferencesPane extends PreferencesPane public SourceControlPreferencesPane(PreferencesDialogResources res, Session session, final GlobalDisplay globalDisplay, + final Commands commands, RemoteFileSystemContext fsContext, FileDialogs fileDialogs) { @@ -86,7 +91,20 @@ public void onValueChange(ValueChangeEvent event) svnChooser.setText(""); addTextBoxChooser(new Label("Svn bin directory:"), null, null, svnChooser); */ + + // show ssh key button + showSshKeyButton_ = new ThemedButton( + "View Public Key...", new ClickHandler() { + @Override + public void onClick(ClickEvent event) + { + commands.versionControlShowRsaKey().execute(); + } + }); + showSshKeyButton_.addStyleName(res_.styles().viewSshKey()); + add(showSshKeyButton_); + VCSHelpLink vcsHelpLink = new VCSHelpLink(); nudgeRight(vcsHelpLink); vcsHelpLink.addStyleName(res_.styles().newSection()); @@ -94,6 +112,7 @@ public void onValueChange(ValueChangeEvent event) chkVcsEnabled_.setEnabled(false); gitBinDirChooser_.setEnabled(false); + showSshKeyButton_.setEnabled(false); } @Override @@ -101,9 +120,11 @@ protected void initialize(RPrefs rPrefs) { // source control prefs SourceControlPrefs prefs = rPrefs.getSourceControlPrefs(); + originalPrefs_ = prefs; chkVcsEnabled_.setEnabled(true); gitBinDirChooser_.setEnabled(true); + showSshKeyButton_.setEnabled(true); chkVcsEnabled_.setValue(prefs.getVcsEnabled()); gitBinDirChooser_.setText(prefs.getGitBinDir()); @@ -185,6 +206,8 @@ private void manageControlVisibility() boolean vcsEnabled = chkVcsEnabled_.getValue(); gitBinDirLabel_.setVisible(vcsEnabled); gitBinDirChooser_.setVisible(vcsEnabled); + showSshKeyButton_.setVisible(vcsEnabled && + originalPrefs_.haveRsaPublicKey()); } @@ -192,6 +215,9 @@ private void manageControlVisibility() private final CheckBox chkVcsEnabled_; + private SourceControlPrefs originalPrefs_; + private Label gitBinDirLabel_; private TextBoxWithButton gitBinDirChooser_; + private ThemedButton showSshKeyButton_; }