Revision: 5334
          http://sourceforge.net/p/jump-pilot/code/5334
Author:   edso
Date:     2017-01-22 15:51:03 +0000 (Sun, 22 Jan 2017)
Log Message:
-----------
limit left side wizardselection width refined, now with long text wrapping

Modified Paths:
--------------
    core/trunk/src/org/openjump/core/ui/plugin/file/OpenWizardPlugIn.java
    core/trunk/src/org/openjump/core/ui/swing/wizard/WizardGroupDialog.java

Added Paths:
-----------
    
core/trunk/src/org/openjump/core/ui/swing/wizard/WrappingWizardGroupListCellRenderer.java

Modified: core/trunk/src/org/openjump/core/ui/plugin/file/OpenWizardPlugIn.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/plugin/file/OpenWizardPlugIn.java       
2017-01-21 18:25:40 UTC (rev 5333)
+++ core/trunk/src/org/openjump/core/ui/plugin/file/OpenWizardPlugIn.java       
2017-01-22 15:51:03 UTC (rev 5334)
@@ -74,6 +74,7 @@
 
     WorkbenchFrame workbenchFrame = context.getWorkbenchFrame();
     String name = getName();
+    // dialog = null;
     if (dialog == null) {
       dialog = new WizardGroupDialog(workbenchContext, workbenchFrame, name);
 

Modified: 
core/trunk/src/org/openjump/core/ui/swing/wizard/WizardGroupDialog.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/swing/wizard/WizardGroupDialog.java     
2017-01-21 18:25:40 UTC (rev 5333)
+++ core/trunk/src/org/openjump/core/ui/swing/wizard/WizardGroupDialog.java     
2017-01-22 15:51:03 UTC (rev 5334)
@@ -1,7 +1,6 @@
 package org.openjump.core.ui.swing.wizard;
 
 import java.awt.BorderLayout;
-import java.awt.Dimension;
 import java.awt.Frame;
 import java.util.ArrayList;
 import java.util.List;
@@ -10,6 +9,7 @@
 import javax.swing.DefaultListModel;
 import javax.swing.JList;
 import javax.swing.JScrollPane;
+import javax.swing.ListCellRenderer;
 import javax.swing.ListSelectionModel;
 
 import org.openjump.swing.listener.InvokeMethodListSelectionListener;
@@ -41,25 +41,20 @@
     groupSelectList = new JList(new DefaultListModel());
     groupSelectList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     groupSelectList.setVisibleRowCount(-1);
+    // alternate way to force a specific width, currently unused
+    // groupSelectList.setFixedCellWidth(100);
     groupSelectList.setLayoutOrientation(JList.VERTICAL);
-    groupSelectList.setCellRenderer(new WizardGroupListCellRenderer());
+    // let's wrap long description via custom renderer
+    ListCellRenderer renderer = new WrappingWizardGroupListCellRenderer();
+    groupSelectList.setCellRenderer(renderer);
     groupSelectList.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
     groupSelectList.addListSelectionListener(new 
InvokeMethodListSelectionListener(
       this, "updateSelectedWizard"));
 
-    JScrollPane groupScrollPane = new JScrollPane(){
-      // limit min/max width when displayed
-      @Override
-      public Dimension getPreferredSize() {
-        Dimension d = super.getPreferredSize();
-        if (d.width > 125)
-          d.width = 125;
-        else if ( d.width < 75 )
-          d.width = 75;
-        return d;
-      }
-    };
+    JScrollPane groupScrollPane = new JScrollPane();
     groupScrollPane.setViewportView(groupSelectList);
+    // disable horizontal scrolling
+    
groupScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
 
     add(groupScrollPane, BorderLayout.WEST);
   }

Added: 
core/trunk/src/org/openjump/core/ui/swing/wizard/WrappingWizardGroupListCellRenderer.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/swing/wizard/WrappingWizardGroupListCellRenderer.java
                           (rev 0)
+++ 
core/trunk/src/org/openjump/core/ui/swing/wizard/WrappingWizardGroupListCellRenderer.java
   2017-01-22 15:51:03 UTC (rev 5334)
@@ -0,0 +1,52 @@
+package org.openjump.core.ui.swing.wizard;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+
+import javax.swing.Box;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+
+import com.vividsolutions.jump.workbench.ui.GUIUtil;
+
+public class WrappingWizardGroupListCellRenderer extends 
DefaultListCellRenderer {
+  JPanel selectionPanel = new JPanel(new BorderLayout());
+  JPanel wrappingPanel = new JPanel(new BorderLayout());
+  JLabel label = new JLabel();
+
+  public WrappingWizardGroupListCellRenderer() {
+    super();
+    label.setVerticalTextPosition(BOTTOM);
+    label.setHorizontalAlignment(CENTER);
+    label.setHorizontalTextPosition(CENTER);
+    selectionPanel.add(Box.createVerticalStrut(2),BorderLayout.NORTH);
+    selectionPanel.add(label,BorderLayout.CENTER);
+    selectionPanel.add(Box.createVerticalStrut(2),BorderLayout.SOUTH);
+    
+    wrappingPanel.add(selectionPanel);
+    wrappingPanel.add(Box.createVerticalStrut(2),BorderLayout.SOUTH);
+  }
+
+  public Component getListCellRendererComponent(JList list, Object value,
+      int index, boolean isSelected, boolean cellHasFocus) {
+
+    super.getListCellRendererComponent(list, value, index, isSelected,
+        cellHasFocus);
+
+    WizardGroup wizard = (WizardGroup) value;
+    label.setText("<html><center><p style='width:100px'>" + 
GUIUtil.escapeHTML(wizard.getName()) +"</p></center><html>");
+    label.setIcon(wizard.getIcon());
+    label.setForeground(getForeground());
+    label.setBackground(getBackground());
+    
+    selectionPanel.setBorder(getBorder());
+    selectionPanel.setForeground(getForeground());
+    selectionPanel.setBackground(getBackground());
+
+    wrappingPanel.setBackground(list.getBackground());
+    return wrappingPanel;
+  }
+
+}
\ No newline at end of file


Property changes on: 
core/trunk/src/org/openjump/core/ui/swing/wizard/WrappingWizardGroupListCellRenderer.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to