From 0e76383d2f7dd416c918a43c4bff18581704c46d Mon Sep 17 00:00:00 2001 From: Philipp Spohr <spohr.philipp@web.de> Date: Thu, 14 Sep 2017 20:57:01 +0200 Subject: [PATCH] As always, swing requires lots of patience --- .../swing/components/ClusterView.java | 23 +++++---- .../swing/components/ClusterViewList.java | 1 + .../swing/components/MainPanel.java | 3 +- .../swing/components/ResultPanel.java | 47 +++++++++---------- .../swing/components/SolutionTab.java | 26 ++++++++-- 5 files changed, 62 insertions(+), 38 deletions(-) diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java index c0fa84e..3259160 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterView.java @@ -21,6 +21,9 @@ ******************************************************************************/ package de.hhu.ba.yoshikoWrapper.swing.components; +import static javax.swing.GroupLayout.DEFAULT_SIZE; +import static javax.swing.GroupLayout.PREFERRED_SIZE; + import java.awt.Color; import java.awt.Dimension; import java.awt.event.MouseEvent; @@ -73,12 +76,10 @@ public class ClusterView extends JPanel { title = new JLabel(LocalizationManager.get("cluster")+" "+(c.getID()+1)); clusterSize = new JLabel(LocalizationManager.get("clusterSize")+" "+c.getSize()); icon = new JLabel(); - icon.setPreferredSize(new Dimension(CLUSTER_ICON_SIZE,CLUSTER_ICON_SIZE)); - icon.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + //icon.setBorder(BorderFactory.createLineBorder(Color.BLACK)); cluster.applyImage(icon,CLUSTER_ICON_SIZE, CLUSTER_ICON_SIZE); SwingUtil.addAll(this,title,clusterSize,icon); - this.add(Box.createVerticalStrut(4)); nodeList = new BasicCollapsiblePanel(LocalizationManager.get("nodes")); @@ -97,22 +98,28 @@ public class ClusterView extends JPanel { this.setBorder(regularBorder); GroupLayout layout = new GroupLayout(this); - layout.setHorizontalGroup(layout.createParallelGroup() + + layout.setAutoCreateContainerGaps(true); + layout.setAutoCreateContainerGaps(true); + + layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING,true) .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup() - .addComponent(title) - .addComponent(clusterSize) + .addGroup(layout.createParallelGroup(Alignment.LEADING,true) + .addComponent(title,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) + .addComponent(clusterSize,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) ) + .addGap(6) .addComponent(icon) ) .addComponent(nodeList) ); layout.setVerticalGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(Alignment.CENTER) + .addGroup(layout.createParallelGroup(Alignment.CENTER,true) .addGroup(layout.createSequentialGroup() .addComponent(title) .addComponent(clusterSize) ) + .addGap(6) .addComponent(icon) ) .addComponent(nodeList) diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterViewList.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterViewList.java index 610c525..396439f 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterViewList.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ClusterViewList.java @@ -6,6 +6,7 @@ import java.awt.Rectangle; import javax.swing.JPanel; import javax.swing.Scrollable; +@SuppressWarnings("serial") public class ClusterViewList extends JPanel implements Scrollable { @Override diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java index dfb5ab9..54063d3 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java @@ -231,8 +231,9 @@ public class MainPanel extends JPanel implements CytoPanelComponent { .addComponent(opWrapper,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) ); - this.setLayout(layout); scrollableContent.setLayout(scrollLayout); + + this.setLayout(layout); } private ActionListener toggleAdvancedOptionsListener = new ActionListener() { diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java index f8830e9..928ffd5 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/ResultPanel.java @@ -21,13 +21,17 @@ ******************************************************************************/ package de.hhu.ba.yoshikoWrapper.swing.components; +import static javax.swing.GroupLayout.*; + import java.awt.Color; import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.GroupLayout; +import javax.swing.GroupLayout.Group; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JLabel; @@ -112,35 +116,30 @@ public class ResultPanel extends JPanel implements CytoPanelComponent{ //Layout GroupLayout layout = new GroupLayout(this); - layout.setAutoCreateGaps(true); - layout.setAutoCreateContainerGaps(true); + Group horizontalGroup = layout.createParallelGroup(Alignment.LEADING,true); + Group verticalGroup = layout.createSequentialGroup(); + + layout.setHorizontalGroup(horizontalGroup); + layout.setVerticalGroup(verticalGroup); if (result.flags.getIlpGenerated()) { - layout.setVerticalGroup(layout.createSequentialGroup() - .addComponent(marker) - .addComponent(solutionTabs) - .addComponent(destroyButton) - ); - - layout.setHorizontalGroup(layout.createParallelGroup() - .addComponent(marker) - .addComponent(solutionTabs) - .addComponent(destroyButton) - ); - } - else { - layout.setVerticalGroup(layout.createSequentialGroup() - .addComponent(solutionTabs) - .addComponent(destroyButton) - ); - - layout.setHorizontalGroup(layout.createParallelGroup() - .addComponent(solutionTabs) - .addComponent(destroyButton) - ); + horizontalGroup.addComponent(marker,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE); + verticalGroup.addComponent(marker,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE); } + horizontalGroup + .addComponent(solutionTabs,DEFAULT_SIZE, DEFAULT_SIZE,Short.MAX_VALUE) + .addComponent(destroyButton,DEFAULT_SIZE, DEFAULT_SIZE,DEFAULT_SIZE); + verticalGroup + .addComponent(solutionTabs,DEFAULT_SIZE, DEFAULT_SIZE,PREFERRED_SIZE) + .addComponent(destroyButton,DEFAULT_SIZE, DEFAULT_SIZE,PREFERRED_SIZE); + + layout.setAutoCreateGaps(true); + layout.setAutoCreateContainerGaps(true); + + this.setLayout(layout); + this.setPreferredSize(new Dimension(this.getPreferredSize().width*2,this.getPreferredSize().height)); } public void deleteSolution() { diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java index 1577d93..6506fe0 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/SolutionTab.java @@ -24,6 +24,7 @@ package de.hhu.ba.yoshikoWrapper.swing.components; import static javax.swing.GroupLayout.DEFAULT_SIZE; import static javax.swing.GroupLayout.PREFERRED_SIZE; +import java.awt.Dimension; import java.awt.ScrollPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -32,6 +33,7 @@ import java.util.Comparator; import javax.swing.BoxLayout; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; +import javax.swing.GroupLayout.Group; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -63,7 +65,6 @@ public class SolutionTab extends JPanel { //init swing components scrollPaneContent = new ClusterViewList(); - scrollPaneContent.setLayout(new BoxLayout(scrollPaneContent,BoxLayout.Y_AXIS)); //Sort cluster by size, descending solution.cluster.sort(new Comparator<YoshikoCluster>() { @@ -81,14 +82,29 @@ public class SolutionTab extends JPanel { }); + GroupLayout scrollLayout = new GroupLayout(scrollPaneContent); + scrollLayout.setAutoCreateContainerGaps(true); + scrollLayout.setAutoCreateGaps(true); + + Group horizontalGroup = scrollLayout.createParallelGroup(); + Group verticalGroup = scrollLayout.createSequentialGroup(); + for (YoshikoCluster c: solution.cluster) { ClusterView clusterView = new ClusterView(c); scrollPaneContent.add(clusterView); + horizontalGroup.addComponent(clusterView); + verticalGroup.addComponent(clusterView); } + scrollLayout.setHorizontalGroup(horizontalGroup); + scrollLayout.setVerticalGroup(verticalGroup); + + scrollPaneContent.setLayout(scrollLayout); + scrollPane = new JScrollPane(scrollPaneContent); scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); clusterCount = new JLabel(LocalizationManager.get("clusterFound")+" "+s.cluster.size()); @@ -111,13 +127,13 @@ public class SolutionTab extends JPanel { GroupLayout layout = new GroupLayout(this); layout.setHorizontalGroup(layout.createParallelGroup(Alignment.LEADING,true) .addComponent(clusterCount,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE) - .addComponent(scrollPane,PREFERRED_SIZE,PREFERRED_SIZE,PREFERRED_SIZE) + .addComponent(scrollPane,PREFERRED_SIZE,DEFAULT_SIZE,Short.MAX_VALUE) .addComponent(createMetaGraph,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE) ); layout.setVerticalGroup(layout.createSequentialGroup() - .addComponent(clusterCount,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) - .addComponent(scrollPane,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) - .addComponent(createMetaGraph,DEFAULT_SIZE,DEFAULT_SIZE,PREFERRED_SIZE) + .addComponent(clusterCount,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE) + .addComponent(scrollPane,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE) + .addComponent(createMetaGraph,DEFAULT_SIZE,DEFAULT_SIZE,DEFAULT_SIZE) ); this.setLayout(layout); -- GitLab