You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2021/06/04 08:05:22 UTC

[incubator-hop] branch master updated: HOP-2936 Add help button on metadata dialog

This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git


The following commit(s) were added to refs/heads/master by this push:
     new 495d8e4  HOP-2936 Add help button on metadata dialog
     new c3020fe  Merge pull request #851 from nadment/HOP-2936
495d8e4 is described below

commit 495d8e4786958b137db289585f8005613f4b017e
Author: nadment <na...@gmail.com>
AuthorDate: Thu Jun 3 22:57:08 2021 +0200

    HOP-2936 Add help button on metadata dialog
---
 .../main/java/org/apache/hop/core/database/DatabaseMeta.java |  4 +++-
 .../main/java/org/apache/hop/metadata/api/HopMetadata.java   |  2 ++
 .../org/apache/hop/metadata/plugin/MetadataPluginType.java   |  2 +-
 .../main/java/org/apache/hop/partition/PartitionSchema.java  |  3 ++-
 .../apache/hop/pipeline/config/PipelineRunConfiguration.java |  3 ++-
 engine/src/main/java/org/apache/hop/server/HopServer.java    |  3 ++-
 .../apache/hop/workflow/config/WorkflowRunConfiguration.java |  3 ++-
 .../src/main/java/org/apache/hop/www/service/WebService.java |  4 +++-
 .../java/org/apache/hop/beam/metadata/FileDefinition.java    |  3 ++-
 .../org/apache/hop/reflection/pipeline/meta/PipelineLog.java |  4 +++-
 .../org/apache/hop/reflection/probe/meta/PipelineProbe.java  |  3 ++-
 .../org/apache/hop/reflection/workflow/meta/WorkflowLog.java |  3 ++-
 .../src/main/java/org/apache/hop/testing/DataSet.java        |  3 ++-
 .../databases/cassandra/metadata/CassandraConnection.java    |  3 ++-
 .../src/main/java/org/apache/hop/neo4j/model/GraphModel.java |  3 ++-
 .../main/java/org/apache/hop/neo4j/shared/NeoConnection.java |  3 ++-
 .../org/apache/hop/mongo/metadata/MongoDbConnection.java     |  3 ++-
 .../main/java/org/apache/hop/splunk/SplunkConnection.java    |  3 ++-
 .../java/org/apache/hop/ui/core/metadata/MetadataEditor.java | 10 ++++++++++
 .../apache/hop/ui/core/metadata/MetadataEditorDialog.java    | 12 +++++++++---
 20 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/core/src/main/java/org/apache/hop/core/database/DatabaseMeta.java b/core/src/main/java/org/apache/hop/core/database/DatabaseMeta.java
index 6b0f437..6d752e2 100644
--- a/core/src/main/java/org/apache/hop/core/database/DatabaseMeta.java
+++ b/core/src/main/java/org/apache/hop/core/database/DatabaseMeta.java
@@ -64,7 +64,9 @@ import java.util.concurrent.Future;
     key = "rdbms",
     name = "Relational Database Connection",
     description = "This contains all the metadata needed to connect to a relational database",
-    image = "ui/images/database.svg")
+    image = "ui/images/database.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/pipeline-run-config.html"
+)
 public class DatabaseMeta extends HopMetadataBase implements Cloneable, IHopMetadata {
   private static final Class<?> PKG = Database.class; // For Translator
 
diff --git a/core/src/main/java/org/apache/hop/metadata/api/HopMetadata.java b/core/src/main/java/org/apache/hop/metadata/api/HopMetadata.java
index 62dfc1d..23e1323 100644
--- a/core/src/main/java/org/apache/hop/metadata/api/HopMetadata.java
+++ b/core/src/main/java/org/apache/hop/metadata/api/HopMetadata.java
@@ -39,4 +39,6 @@ public @interface HopMetadata {
   String description() default "";
 
   String image() default "ui/images/folder.svg";
+  
+  String documentationUrl() default "";
 }
diff --git a/core/src/main/java/org/apache/hop/metadata/plugin/MetadataPluginType.java b/core/src/main/java/org/apache/hop/metadata/plugin/MetadataPluginType.java
index dbbfd7a..4fb8980 100644
--- a/core/src/main/java/org/apache/hop/metadata/plugin/MetadataPluginType.java
+++ b/core/src/main/java/org/apache/hop/metadata/plugin/MetadataPluginType.java
@@ -90,7 +90,7 @@ public class MetadataPluginType extends BasePluginType<HopMetadata> {
 
   @Override
   protected String extractDocumentationUrl( HopMetadata annotation ) {
-    return null;
+    return annotation.documentationUrl();
   }
 
   @Override
diff --git a/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java b/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java
index 6ee32ec..5eb3f82 100644
--- a/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java
+++ b/engine/src/main/java/org/apache/hop/partition/PartitionSchema.java
@@ -37,7 +37,8 @@ import java.util.List;
   key = "partition",
   name = "Partition Schema",
   description = "Describes a partition schema",
-  image = "ui/images/partition_schema.svg"
+  image = "ui/images/partition_schema.svg",
+  documentationUrl="https://hop.apache.org/manual/latest/metadata-types/partition-schema.html"
 )
 public class PartitionSchema extends HopMetadataBase implements Cloneable, IHopMetadata {
 
diff --git a/engine/src/main/java/org/apache/hop/pipeline/config/PipelineRunConfiguration.java b/engine/src/main/java/org/apache/hop/pipeline/config/PipelineRunConfiguration.java
index 876395c..52f0acc 100644
--- a/engine/src/main/java/org/apache/hop/pipeline/config/PipelineRunConfiguration.java
+++ b/engine/src/main/java/org/apache/hop/pipeline/config/PipelineRunConfiguration.java
@@ -32,7 +32,8 @@ import java.util.List;
   key = "pipeline-run-configuration",
   name = "Pipeline Run Configuration",
   description = "Describes how and with which engine a pipeline is to be executed",
-  image = "ui/images/pipeline_run_config.svg"
+  image = "ui/images/pipeline_run_config.svg",
+  documentationUrl="https://hop.apache.org/manual/latest/metadata-types/pipeline-run-config.html"
 )
 public class PipelineRunConfiguration extends HopMetadataBase implements Cloneable, IHopMetadata {
 
diff --git a/engine/src/main/java/org/apache/hop/server/HopServer.java b/engine/src/main/java/org/apache/hop/server/HopServer.java
index 88f5572..3ea1fbe 100644
--- a/engine/src/main/java/org/apache/hop/server/HopServer.java
+++ b/engine/src/main/java/org/apache/hop/server/HopServer.java
@@ -96,7 +96,8 @@ import java.util.Random;
   key = "server",
   name = "Hop Server",
   description = "Defines a Hop Hop Server",
-  image = "ui/images/server.svg"
+  image = "ui/images/server.svg",
+  documentationUrl = "https://hop.apache.org/manual/latest/metadata-types/hop-server.html"
 )
 public class HopServer extends HopMetadataBase implements Cloneable, IXml, IHopMetadata {
   private static final Class<?> PKG = HopServer.class; // For Translator
diff --git a/engine/src/main/java/org/apache/hop/workflow/config/WorkflowRunConfiguration.java b/engine/src/main/java/org/apache/hop/workflow/config/WorkflowRunConfiguration.java
index 7eccbe8..d58a4c8 100644
--- a/engine/src/main/java/org/apache/hop/workflow/config/WorkflowRunConfiguration.java
+++ b/engine/src/main/java/org/apache/hop/workflow/config/WorkflowRunConfiguration.java
@@ -27,7 +27,8 @@ import org.apache.hop.metadata.api.IHopMetadata;
   key = "workflow-run-configuration",
   name = "Workflow Run Configuration",
   description = "Describes how to execute a workflow",
-  image = "ui/images/workflow_run_config.svg"
+  image = "ui/images/workflow_run_config.svg",
+  documentationUrl="https://hop.apache.org/manual/latest/metadata-types/workflow-run-config.html"
 )
 public class WorkflowRunConfiguration extends HopMetadataBase implements Cloneable, IHopMetadata {
 
diff --git a/engine/src/main/java/org/apache/hop/www/service/WebService.java b/engine/src/main/java/org/apache/hop/www/service/WebService.java
index 7987953..a155c7e 100644
--- a/engine/src/main/java/org/apache/hop/www/service/WebService.java
+++ b/engine/src/main/java/org/apache/hop/www/service/WebService.java
@@ -27,7 +27,9 @@ import org.apache.hop.metadata.api.IHopMetadata;
     key = "web-service",
     name = "Web Service",
     description = "Allows you to run a pipeline to generate output for a servlet on Hop Server",
-    image = "ui/images/server.svg")
+    image = "ui/images/server.svg",
+    documentationUrl = "https://hop.apache.org/manual/latest/metadata-types/web-service.html"
+)
 public class WebService extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
diff --git a/plugins/engines/beam/src/main/java/org/apache/hop/beam/metadata/FileDefinition.java b/plugins/engines/beam/src/main/java/org/apache/hop/beam/metadata/FileDefinition.java
index a761887..7742fef 100644
--- a/plugins/engines/beam/src/main/java/org/apache/hop/beam/metadata/FileDefinition.java
+++ b/plugins/engines/beam/src/main/java/org/apache/hop/beam/metadata/FileDefinition.java
@@ -36,7 +36,8 @@ import java.util.List;
   key = "file-definition",
   name = "Beam File Definition",
   description = "Describes a file layout in a Beam pipeline",
-  image = "ui/images/folder.svg"
+  image = "ui/images/folder.svg",
+  documentationUrl="https://hop.apache.org/manual/latest/metadata-types/beam-file-definition.html"
 )
 public class FileDefinition extends HopMetadataBase implements Serializable, IHopMetadata {
 
diff --git a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
index b2f6282..8a96654 100644
--- a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
+++ b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/pipeline/meta/PipelineLog.java
@@ -27,7 +27,9 @@ import org.apache.hop.metadata.api.IHopMetadata;
     key = "pipeline-log",
     name = "Pipeline Log",
     description = "This metadata object type allows you to log activity of a pipeline with another pipeline",
-    image = "pipeline-log.svg")
+    image = "pipeline-log.svg",
+    documentationUrl = "https://hop.apache.org/manual/latest/metadata-types/pipeline-log.html"
+)
 public class PipelineLog extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
diff --git a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/probe/meta/PipelineProbe.java b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/probe/meta/PipelineProbe.java
index 8854060..7f105de 100644
--- a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/probe/meta/PipelineProbe.java
+++ b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/probe/meta/PipelineProbe.java
@@ -30,7 +30,8 @@ import java.util.List;
     key = "pipeline-probe",
     name = "Pipeline Probe",
     description = "This allows you to stream output rows of a transform to another pipeline",
-    image = "probe.svg")
+    image = "probe.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/pipeline-probe.html")
 public class PipelineProbe extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
diff --git a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
index 697aaf7..2582b64 100644
--- a/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
+++ b/plugins/misc/reflection/src/main/java/org/apache/hop/reflection/workflow/meta/WorkflowLog.java
@@ -27,7 +27,8 @@ import org.apache.hop.metadata.api.IHopMetadata;
     key = "workflow-log",
     name = "Workflow Log",
     description = "This metadata object type allows you to log activity of a workflow with a pipeline",
-    image = "workflow-log.svg")
+    image = "workflow-log.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/workflow-log.html")
 public class WorkflowLog extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private boolean enabled;
diff --git a/plugins/misc/testing/src/main/java/org/apache/hop/testing/DataSet.java b/plugins/misc/testing/src/main/java/org/apache/hop/testing/DataSet.java
index 88f8887..36641d7 100644
--- a/plugins/misc/testing/src/main/java/org/apache/hop/testing/DataSet.java
+++ b/plugins/misc/testing/src/main/java/org/apache/hop/testing/DataSet.java
@@ -41,7 +41,8 @@ import java.util.List;
   key = "dataset",
   name = "Data Set",
   description = "This defines a data set, a static pre-defined collection of rows",
-  image = "dataset.svg"
+  image = "dataset.svg",
+  documentationUrl="https://hop.apache.org/manual/latest/metadata-types/data-set.html"
 )
 public class DataSet extends HopMetadataBase implements Cloneable, IHopMetadata {
 
diff --git a/plugins/tech/cassandra/src/main/java/org/apache/hop/databases/cassandra/metadata/CassandraConnection.java b/plugins/tech/cassandra/src/main/java/org/apache/hop/databases/cassandra/metadata/CassandraConnection.java
index 4ffea29..dd86693 100644
--- a/plugins/tech/cassandra/src/main/java/org/apache/hop/databases/cassandra/metadata/CassandraConnection.java
+++ b/plugins/tech/cassandra/src/main/java/org/apache/hop/databases/cassandra/metadata/CassandraConnection.java
@@ -43,7 +43,8 @@ import java.util.Map;
     key = "cassandra-connection",
     name = "Cassandra Connection",
     description = "Describes a connection to a Cassandra cluster",
-    image = "Cassandra_logo.svg")
+    image = "Cassandra_logo.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/cassandra/cassandra-connection.html")
 public class CassandraConnection extends HopMetadataBase implements IHopMetadata {
 
   public static final String WIDGET_ID_HOSTNAME = "10000-hostname";
diff --git a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/model/GraphModel.java b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/model/GraphModel.java
index 3c45ba2..2d1175b 100644
--- a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/model/GraphModel.java
+++ b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/model/GraphModel.java
@@ -40,7 +40,8 @@ import java.util.List;
     key = "neo4j-graph-model",
     name = "Neo4j Graph Model",
     description = "Description of the nodes, relationships, indexes... of a Neo4j graph",
-    image = "neo4j_logo.svg")
+    image = "neo4j_logo.svg",    
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/neo4j/neo4j-graphmodel.html")
 public class GraphModel extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty protected String description;
diff --git a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/shared/NeoConnection.java b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/shared/NeoConnection.java
index 442f909..6f10412 100644
--- a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/shared/NeoConnection.java
+++ b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/shared/NeoConnection.java
@@ -53,7 +53,8 @@ import java.util.logging.Level;
     key = "neo4j-connection",
     name = "Neo4j Connection",
     description = "A shared connection to a Neo4j server",
-    image = "neo4j_logo.svg")
+    image = "neo4j_logo.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/neo4j/neo4j-connection.html")
 public class NeoConnection extends HopMetadataBase implements IHopMetadata {
 
   @HopMetadataProperty private String server;
diff --git a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/metadata/MongoDbConnection.java b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/metadata/MongoDbConnection.java
index d7a3369..8eb5c28 100644
--- a/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/metadata/MongoDbConnection.java
+++ b/plugins/transforms/mongodb/src/main/java/org/apache/hop/mongo/metadata/MongoDbConnection.java
@@ -42,7 +42,8 @@ import org.apache.hop.mongo.wrapper.MongoWrapperClientFactory;
     key = "mongodb-connection",
     name = "MongoDB Connection",
     description = "Describes a MongoDB connection",
-    image = "MongoDB_Leaf_FullColor_RGB.svg")
+    image = "MongoDB_Leaf_FullColor_RGB.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/mongodb-connection.html")
 public class MongoDbConnection extends HopMetadataBase implements IHopMetadata {
 
   public static final String WIDGET_ID_HOSTNAME = "10000-hostname";
diff --git a/plugins/transforms/splunk/src/main/java/org/apache/hop/splunk/SplunkConnection.java b/plugins/transforms/splunk/src/main/java/org/apache/hop/splunk/SplunkConnection.java
index c33098f..e49a3f3 100644
--- a/plugins/transforms/splunk/src/main/java/org/apache/hop/splunk/SplunkConnection.java
+++ b/plugins/transforms/splunk/src/main/java/org/apache/hop/splunk/SplunkConnection.java
@@ -33,7 +33,8 @@ import org.apache.hop.metadata.api.IHopMetadata;
     key = "splunk",
     name = "Splunk Connection",
     description = "This metadata type describes how you can connect to Splunk",
-    image = "splunk.svg")
+    image = "splunk.svg",
+    documentationUrl="https://hop.apache.org/manual/latest/metadata-types/splunk-connection.html")
 public class SplunkConnection extends HopMetadataBase implements Cloneable, IHopMetadata {
 
   @HopMetadataProperty private String hostname;
diff --git a/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditor.java b/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditor.java
index 88d84f0..2b3ddd3 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditor.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditor.java
@@ -25,15 +25,19 @@ import org.apache.hop.core.Const;
 import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.extension.ExtensionPointHandler;
 import org.apache.hop.core.extension.HopExtensionPoint;
+import org.apache.hop.core.plugins.IPlugin;
+import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.i18n.BaseMessages;
 import org.apache.hop.metadata.api.HopMetadata;
 import org.apache.hop.metadata.api.IHopMetadata;
 import org.apache.hop.metadata.api.IHopMetadataSerializer;
+import org.apache.hop.metadata.plugin.MetadataPluginType;
 import org.apache.hop.ui.core.ConstUi;
 import org.apache.hop.ui.core.dialog.ErrorDialog;
 import org.apache.hop.ui.core.gui.GuiResource;
 import org.apache.hop.ui.hopgui.HopGui;
 import org.apache.hop.ui.hopgui.perspective.metadata.MetadataPerspective;
+import org.apache.hop.ui.util.HelpUtils;
 import org.apache.hop.ui.util.SwtSvgImageUtil;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
@@ -102,6 +106,12 @@ public abstract class MetadataEditor<T extends IHopMetadata> extends MetadataFil
     return null;
   }
 
+  protected Button createHelpButton(final Shell shell) {  
+    HopMetadata annotation = manager.getManagedClass().getAnnotation(HopMetadata.class);
+    IPlugin plugin =  PluginRegistry.getInstance().getPlugin(MetadataPluginType.class, annotation.key());   
+    return HelpUtils.createHelpButton(shell, HelpUtils.getHelpDialogTitle(plugin), plugin);
+  }
+  
   public HopGui getHopGui() {
     return hopGui;
   }
diff --git a/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditorDialog.java b/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditorDialog.java
index da3d212..107c498 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditorDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/metadata/MetadataEditorDialog.java
@@ -29,8 +29,6 @@ import org.apache.hop.ui.core.dialog.ErrorDialog;
 import org.apache.hop.ui.core.gui.WindowProperty;
 import org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
@@ -72,7 +70,7 @@ public class MetadataEditorDialog extends Dialog implements IMetadataDialog {
     Button wCancel = new Button(shell, SWT.PUSH);
     wCancel.setText(BaseMessages.getString(PKG, "System.Button.Cancel"));
     wCancel.addListener(SWT.Selection, e -> cancel());
-
+    
     List<Button> buttons = new ArrayList<>();
     buttons.add(wOk);
     Button[] extras = editor.createButtonsForButtonBar(shell);
@@ -85,6 +83,14 @@ public class MetadataEditorDialog extends Dialog implements IMetadataDialog {
     BaseTransformDialog.positionBottomButtons(
         shell, buttons.toArray(new Button[0]), props.getMargin(), null);
 
+        
+    Button wHelp = editor.createHelpButton(shell);
+    FormData fdHelp = new FormData();
+    fdHelp.bottom = new FormAttachment(100, 0);
+    fdHelp.left = new FormAttachment(0, 0);
+    wHelp.setLayoutData(fdHelp);
+    
+    
     // Create editor content area
     Composite area = new Composite(shell, SWT.NONE);
     FormLayout layout = new FormLayout();