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