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 2020/12/14 22:22:03 UTC

[incubator-hop] branch master updated: HOP-2301 Add icon to each type of Hop file

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 850ed02  HOP-2301 Add icon to each type of Hop file
     new a1478a3  Merge pull request #468 from nadment/HOP-2301
850ed02 is described below

commit 850ed028f79335e0b07bc28a1a2bae3c84adb9a4
Author: nadment <na...@gmail.com>
AuthorDate: Mon Dec 14 20:39:17 2020 +0100

    HOP-2301 Add icon to each type of Hop file
---
 .../org/apache/hop/ui/core/gui/GuiResource.java    | 14 ++++++++
 .../apache/hop/ui/core/vfs/HopVfsFileDialog.java   | 40 ++++++++++++++++------
 .../apache/hop/ui/hopgui/file/HopFileTypeBase.java |  5 ++-
 .../hop/ui/hopgui/file/HopFileTypePlugin.java      |  2 ++
 .../hop/ui/hopgui/file/HopFileTypePluginType.java  |  5 +++
 .../hopgui/file/pipeline/HopPipelineFileType.java  |  3 +-
 .../hopgui/file/workflow/HopWorkflowFileType.java  |  3 +-
 7 files changed, 58 insertions(+), 14 deletions(-)

diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
index 7bd3b71..9147a20 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
@@ -188,6 +188,8 @@ public class GuiResource {
   private SwtUniversalImage imageArrow;
 
   private SwtUniversalImage imageFolder;
+  
+  private SwtUniversalImage imageFile;
 
   private Image imageWizard;
 
@@ -554,6 +556,7 @@ public class GuiResource {
       imageCalendar.dispose();
       imageServer.dispose();
       imageArrow.dispose();
+      imageFile.dispose();
       imageFolder.dispose();
       imageWizard.dispose();
       imageStart.dispose();
@@ -1074,6 +1077,10 @@ public class GuiResource {
     // "ui/images/folder.svg"
     imageFolder = SwtSvgImageUtil.getUniversalImage( display, getClass().getClassLoader(), BasePropertyHandler.getProperty( "Folder_image" ) );
 
+    // "ui/images/file.svg"
+    imageFile = SwtSvgImageUtil.getImageAsResource( display, "ui/images/file.svg" );
+    
+    
     // Makes transparent images "on the fly"
     //
 
@@ -1655,6 +1662,13 @@ public class GuiResource {
   }
 
   /**
+   * @return the imageFile
+   */
+  public Image getImageFile() {
+    return getZoomedImaged( imageFile, display, ConstUi.MEDIUM_ICON_SIZE, ConstUi.MEDIUM_ICON_SIZE );
+  }  
+  
+  /**
    * @return the imageStartSmall
    */
   public Image getImageStartMedium() {
diff --git a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
index e3714b0..c694ec3 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
@@ -24,9 +24,12 @@ import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
 import org.apache.hop.core.Const;
 import org.apache.hop.core.Props;
+import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.gui.plugin.GuiPlugin;
 import org.apache.hop.core.gui.plugin.toolbar.GuiToolbarElement;
 import org.apache.hop.core.logging.LogChannel;
+import org.apache.hop.core.plugins.IPlugin;
+import org.apache.hop.core.plugins.PluginRegistry;
 import org.apache.hop.core.variables.IVariables;
 import org.apache.hop.core.vfs.HopVfs;
 import org.apache.hop.history.AuditList;
@@ -44,6 +47,9 @@ import org.apache.hop.ui.core.gui.WindowProperty;
 import org.apache.hop.ui.core.widget.TextVar;
 import org.apache.hop.ui.core.widget.TreeUtil;
 import org.apache.hop.ui.hopgui.HopGui;
+import org.apache.hop.ui.hopgui.file.HopFileTypePluginType;
+import org.apache.hop.ui.hopgui.file.HopFileTypeRegistry;
+import org.apache.hop.ui.hopgui.file.IHopFileType;
 import org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
 import org.apache.hop.ui.util.SwtSvgImageUtil;
 import org.eclipse.swt.SWT;
@@ -140,6 +146,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
   private FileObject activeFileObject;
   private FileObject activeFolder;
 
+  private Image folderImage;
   private Image fileImage;
 
   private static HopVfsFileDialog instance;
@@ -199,13 +206,8 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
     }
     navigationIndex = navigationHistory.size() - 1;
 
-    fileImage =
-        SwtSvgImageUtil.getImage(
-            parent.getDisplay(),
-            getClass().getClassLoader(),
-            "ui/images/file.svg",
-            ConstUi.ICON_SIZE,
-            ConstUi.ICON_SIZE);
+    fileImage = GuiResource.getInstance().getImageFile();
+    folderImage = GuiResource.getInstance().getImageFolder();
   }
 
   /**
@@ -443,7 +445,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
     wBrowser = new Tree(browseSash, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
     props.setLook(wBrowser);
     wBrowser.setHeaderVisible(true);
-    wBrowser.setLinesVisible(true); // TODO needed?
+    wBrowser.setLinesVisible(false); // TODO needed?
 
     TreeColumn folderColumn = new TreeColumn(wBrowser, SWT.LEFT);
     folderColumn.setText("Name");
@@ -763,7 +765,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
       fileObjectsMap = new HashMap<>();
 
       TreeItem parentFolderItem = new TreeItem(wBrowser, SWT.NONE);
-      parentFolderItem.setImage(GuiResource.getInstance().getImageFolder());
+      parentFolderItem.setImage(folderImage);
       parentFolderItem.setText(activeFolder.getName().getBaseName());
       fileObjectsMap.put(getTreeItemPath(parentFolderItem), activeFolder);
 
@@ -853,7 +855,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
           continue;
         }
         TreeItem childFolderItem = new TreeItem(folderItem, SWT.NONE);
-        childFolderItem.setImage(GuiResource.getInstance().getImageFolder());
+        childFolderItem.setImage(folderImage);
         childFolderItem.setText(child.getName().getBaseName());
         fileObjectsMap.put(getTreeItemPath(childFolderItem), child);
       }
@@ -882,7 +884,7 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
           //
           if (selectFile) {
             TreeItem childFileItem = new TreeItem(folderItem, SWT.NONE);
-            childFileItem.setImage(fileImage);
+            childFileItem.setImage(getFileImage(child));
             childFileItem.setFont(GuiResource.getInstance().getFontBold());
             childFileItem.setText(0, child.getName().getBaseName());
             childFileItem.setText(1, getFileDate(child));
@@ -904,6 +906,22 @@ public class HopVfsFileDialog implements IFileDialog, IDirectoryDialog {
       }
     }
   }
+  
+  private Image getFileImage(FileObject file) {
+  try {
+    IHopFileType<?> fileType = HopFileTypeRegistry.getInstance().findHopFileType(file.getName().getBaseName());
+    if ( fileType!=null ) {
+      IPlugin plugin = PluginRegistry.getInstance().getPlugin(HopFileTypePluginType.class, fileType);
+      if ( plugin!=null && plugin.getImageFile()!=null )  {
+        return GuiResource.getInstance().getImage(plugin.getImageFile(), ConstUi.SMALL_ICON_SIZE, ConstUi.SMALL_ICON_SIZE);
+      }
+    }
+  } catch (HopException e) {
+      // Ignore
+  }
+  
+  return fileImage;
+}
 
   private String getFileSize(FileObject child) {
     try {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
index 6bf0c47..b77f1be 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypeBase.java
@@ -25,9 +25,9 @@ package org.apache.hop.ui.hopgui.file;
 import org.apache.commons.vfs2.FileName;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.hop.core.exception.HopException;
+import org.apache.hop.core.util.Utils;
 import org.apache.hop.core.vfs.HopVfs;
 import org.apache.hop.core.xml.IXml;
-
 import java.util.Properties;
 
 public abstract class HopFileTypeBase<T extends IXml> implements IHopFileType<T> {
@@ -58,6 +58,9 @@ public abstract class HopFileTypeBase<T extends IXml> implements IHopFileType<T>
         FileName fileName = fileObject.getName();
         String fileExtension = fileName.getExtension();
 
+        // No extension
+        if ( Utils.isEmpty(fileExtension) ) return false;
+        
         // Verify the extension
         //
         for ( String typeExtension : getFilterExtensions() ) {
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
index 9b579c9..cee1547 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePlugin.java
@@ -42,4 +42,6 @@ public @interface HopFileTypePlugin {
   String name() default "";
 
   String description() default "";
+  
+  String image() default "";
 }
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
index d9202dd..cdb4231 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/HopFileTypePluginType.java
@@ -61,4 +61,9 @@ public class HopFileTypePluginType extends BasePluginType<HopFileTypePlugin> imp
   protected String extractName( HopFileTypePlugin annotation ) {
     return  annotation.name();
   }
+  
+  @Override
+  protected String extractImageFile( HopFileTypePlugin annotation ) {
+    return annotation.image();
+  }  
 }
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
index 411a3af..3d5a285 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopPipelineFileType.java
@@ -49,7 +49,8 @@ import java.util.Properties;
 
 @HopFileTypePlugin(
   id = "HopFile-Pipeline-Plugin",
-  description = "The pipeline file information for the Hop GUI"
+  description = "The pipeline file information for the Hop GUI",
+  image="ui/images/PPL.svg"
 )
 public class HopPipelineFileType<T extends PipelineMeta> extends HopFileTypeBase<T> implements IHopFileType<T> {
 
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
index ecec63b..fd90d6b 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopWorkflowFileType.java
@@ -48,7 +48,8 @@ import java.util.Properties;
 
 @HopFileTypePlugin(
   id = "HopFile-Workflow-Plugin",
-  description = "The workflow file information for the Hop GUI"
+  description = "The workflow file information for the Hop GUI",
+  image="ui/images/workflow3.svg"
 )
 public class HopWorkflowFileType<T extends WorkflowMeta> extends HopFileTypeBase<T> implements IHopFileType<T> {