From 1308a9caa253d64b65b2a2486d7f33f1c9668131 Mon Sep 17 00:00:00 2001 From: Emilia Dominiak Date: Thu, 16 Jan 2020 13:18:27 +0100 Subject: [PATCH] Add possibility to set node address and username in preferences User has to write node address and username for every project separately. It improves user experience by creating a possibility to set both in preferences windows so user doesn't have to repeat them for every project if they don't change. Signed-off-by: Emilia Dominiak --- org.sofproject.gst.topo/META-INF/MANIFEST.MF | 1 + .../sofproject/gst/topo/IGstNodeConst.java | 5 ++ org.sofproject.ui/META-INF/MANIFEST.MF | 3 +- org.sofproject.ui/plugin.xml | 7 ++ .../ui/handlers/AudioDevNodeLoginDialog.java | 5 +- .../ui/preferences/ConnectionPreferences.java | 66 +++++++++++++++++++ .../wizards/NewAudioDevNodeCreationPage.java | 4 ++ 7 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 org.sofproject.ui/src/org/sofproject/ui/preferences/ConnectionPreferences.java diff --git a/org.sofproject.gst.topo/META-INF/MANIFEST.MF b/org.sofproject.gst.topo/META-INF/MANIFEST.MF index dd4cd5d..50f78f1 100644 --- a/org.sofproject.gst.topo/META-INF/MANIFEST.MF +++ b/org.sofproject.gst.topo/META-INF/MANIFEST.MF @@ -10,3 +10,4 @@ Require-Bundle: org.sofproject.core, org.sofproject.ui, org.sofproject.topo.ui, com.jcraft.jsch +Export-Package: org.sofproject.gst.topo diff --git a/org.sofproject.gst.topo/src/org/sofproject/gst/topo/IGstNodeConst.java b/org.sofproject.gst.topo/src/org/sofproject/gst/topo/IGstNodeConst.java index d2caa85..5ffa04f 100644 --- a/org.sofproject.gst.topo/src/org/sofproject/gst/topo/IGstNodeConst.java +++ b/org.sofproject.gst.topo/src/org/sofproject/gst/topo/IGstNodeConst.java @@ -31,6 +31,8 @@ public interface IGstNodeConst { String GST_NODE_CORE_ID = "org.sofproject.gst.topo"; + String GST_NODE_PREFERENCES_ID = "org.sofproject.ui.preferences"; + String GST_NODE_EXTENSION_ID = GST_NODE_CORE_ID + ".gstextension"; String GST_PROJ_DEFAULT_GST_INSPECT_TOOL_CMD = "gst-inspect-1.0"; @@ -38,4 +40,7 @@ public interface IGstNodeConst { String GST_PROJ_PROP_GST_INSPECT_TOOL_CMD = "gstInspectToolCmd"; String GST_PROJ_PROP_GST_LAUNCH_TOOL_CMD = "gstLaunchToolCmd"; + + String CONN_ADDR_PREF_NAME = "connAddress"; + String CONN_USERNAME_PREF_NAME = "connUsername"; } diff --git a/org.sofproject.ui/META-INF/MANIFEST.MF b/org.sofproject.ui/META-INF/MANIFEST.MF index 184223c..7e1d059 100644 --- a/org.sofproject.ui/META-INF/MANIFEST.MF +++ b/org.sofproject.ui/META-INF/MANIFEST.MF @@ -25,4 +25,5 @@ Export-Package: org.sofproject.ui.editor, org.sofproject.ui.properties, org.sofproject.ui.wizards Bundle-Vendor: Intel Corporation -Import-Package: com.google.common.collect;version="21.0.0" +Import-Package: com.google.common.collect;version="21.0.0", + org.sofproject.gst.topo diff --git a/org.sofproject.ui/plugin.xml b/org.sofproject.ui/plugin.xml index 30c5c19..a8fc0cc 100644 --- a/org.sofproject.ui/plugin.xml +++ b/org.sofproject.ui/plugin.xml @@ -101,4 +101,11 @@ name="Audio Development"> + + + + diff --git a/org.sofproject.ui/src/org/sofproject/ui/handlers/AudioDevNodeLoginDialog.java b/org.sofproject.ui/src/org/sofproject/ui/handlers/AudioDevNodeLoginDialog.java index 24abda9..fa49a33 100644 --- a/org.sofproject.ui/src/org/sofproject/ui/handlers/AudioDevNodeLoginDialog.java +++ b/org.sofproject.ui/src/org/sofproject/ui/handlers/AudioDevNodeLoginDialog.java @@ -29,6 +29,7 @@ package org.sofproject.ui.handlers; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.TrayDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -38,6 +39,7 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; +import org.sofproject.gst.topo.IGstNodeConst; public class AudioDevNodeLoginDialog extends TrayDialog { @@ -89,13 +91,14 @@ protected Control createDialogArea(Composite parent) { data.grabExcessHorizontalSpace = true; loginField = new Text(loginGroup, SWT.BORDER); loginField.setLayoutData(data); + loginField.setText(Platform.getPreferencesService().getString(IGstNodeConst.GST_NODE_PREFERENCES_ID, + IGstNodeConst.CONN_USERNAME_PREF_NAME, "", null)); new Label(loginGroup, SWT.NONE).setText("Password"); data = new GridData(GridData.FILL_HORIZONTAL); data.grabExcessHorizontalSpace = true; passField = new Text(loginGroup, SWT.PASSWORD | SWT.BORDER); passField.setLayoutData(data); - loginField.setFocus(); return container; diff --git a/org.sofproject.ui/src/org/sofproject/ui/preferences/ConnectionPreferences.java b/org.sofproject.ui/src/org/sofproject/ui/preferences/ConnectionPreferences.java new file mode 100644 index 0000000..eca5c56 --- /dev/null +++ b/org.sofproject.ui/src/org/sofproject/ui/preferences/ConnectionPreferences.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2019, Intel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Intel Corporation nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +package org.sofproject.ui.preferences; + +import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.sofproject.gst.topo.IGstNodeConst; + +public class ConnectionPreferences extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + private StringFieldEditor ipFieldEditor; + private StringFieldEditor userFieldEditor; + + @Override + public void init(IWorkbench workbench) { + IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, + IGstNodeConst.GST_NODE_PREFERENCES_ID); + setPreferenceStore(store); + + } + + @Override + protected void createFieldEditors() { + ipFieldEditor = new StringFieldEditor(IGstNodeConst.CONN_ADDR_PREF_NAME, "Last address for Dev projects ", + getFieldEditorParent()); + addField(ipFieldEditor); + + userFieldEditor = new StringFieldEditor(IGstNodeConst.CONN_USERNAME_PREF_NAME, "Last login name for Dev projects: ", + getFieldEditorParent()); + addField(userFieldEditor); + + } + +} diff --git a/org.sofproject.ui/src/org/sofproject/ui/wizards/NewAudioDevNodeCreationPage.java b/org.sofproject.ui/src/org/sofproject/ui/wizards/NewAudioDevNodeCreationPage.java index 8ae0a02..f5dd4f5 100644 --- a/org.sofproject.ui/src/org/sofproject/ui/wizards/NewAudioDevNodeCreationPage.java +++ b/org.sofproject.ui/src/org/sofproject/ui/wizards/NewAudioDevNodeCreationPage.java @@ -29,6 +29,7 @@ package org.sofproject.ui.wizards; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -39,6 +40,7 @@ import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; import org.sofproject.core.AudioDevNodeProject; +import org.sofproject.gst.topo.IGstNodeConst; public class NewAudioDevNodeCreationPage extends WizardNewProjectCreationPage { @@ -75,6 +77,8 @@ public void createControl(Composite parent) { addr = new Text(addrGroup, SWT.BORDER); addr.setLayoutData(data); addr.addListener(SWT.Modify, confModifyListener); + addr.setText(Platform.getPreferencesService().getString(IGstNodeConst.GST_NODE_PREFERENCES_ID, + IGstNodeConst.CONN_ADDR_PREF_NAME, "", null)); } @Override