X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fgui%2FPipelinePanel.java;h=4b1527cc9798ee151106ca4e7708bc83f8db81b6;hb=cb78e23372643d53b4cb731ae8c7c494b0752111;hp=f74147f2cc794d31d324b4f719feafa7eab0983d;hpb=9cbbefedfb3154da76579b94c87053491c9495a6;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java b/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java index f74147f..4b1527c 100644 --- a/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java +++ b/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java @@ -29,21 +29,18 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collection; import java.util.EventListener; -import java.util.List; +import java.util.logging.Logger; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.event.EventListenerList; import net.pterodactylus.sonitus.data.ControlledComponent; -import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.Metadata; import net.pterodactylus.sonitus.data.MetadataListener; import net.pterodactylus.sonitus.data.Pipeline; import net.pterodactylus.sonitus.data.Sink; import net.pterodactylus.sonitus.data.Source; -import com.google.common.collect.Lists; - /** * {@link JPanel} that displays all components of a {@link Pipeline}. * @@ -51,6 +48,9 @@ import com.google.common.collect.Lists; */ public class PipelinePanel extends JPanel { + /** The logger. */ + private static final Logger logger = Logger.getLogger(PipelinePanel.class.getName()); + /** The pipeline being displayed. */ private final Pipeline pipeline; @@ -94,16 +94,16 @@ public class PipelinePanel extends JPanel { /* count all sinks. */ int sinkCount = 0; - List sources = Lists.newArrayList(pipeline.source()); - while (!sources.isEmpty()) { - Collection sinks = pipeline.sinks(sources.remove(0)); - for (Sink sink : sinks) { - /* only count real sinks, everything else is filter. */ - if (sink instanceof Filter) { - sources.add((Filter) sink); - } else { - sinkCount++; - } + for (ControlledComponent component : pipeline.components()) { + if (!(component instanceof Source)) { + logger.finest(String.format("%s is not a Source, skipping.", component.name())); + sinkCount++; + continue; + } + Collection sinks = pipeline.sinks((Source) component); + logger.finest(String.format("%s has %d sinks: %s", component.name(), sinks.size(), sinks)); + if (sinks.isEmpty()) { + sinkCount++; } } @@ -147,18 +147,20 @@ public class PipelinePanel extends JPanel { /* if the component does not have connected sinks, exit here. */ if (!(controlledComponent instanceof Source)) { - add(new JPanel(), new GridBagConstraints(position, level + 1, width, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); + add(new JPanel(), new GridBagConstraints(position, 999, width, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); return; } /* iterate over the component’s sinks. */ Collection sinks = pipeline.sinks((Source) controlledComponent); - int sinkWidth = width / sinks.size(); - int sinkIndex = 0; - for (Sink connectedSink : sinks) { - /* distribute all sinks evenly below this source. */ - addControlled(connectedSink, level + 1, position + sinkIndex * sinkWidth, sinkWidth, controlledComponent); - sinkIndex++; + if (!sinks.isEmpty()) { + int sinkWidth = width / sinks.size(); + int sinkIndex = 0; + for (Sink connectedSink : sinks) { + /* distribute all sinks evenly below this source. */ + addControlled(connectedSink, level + 1, position + sinkIndex * sinkWidth, sinkWidth, controlledComponent); + sinkIndex++; + } } } @@ -173,26 +175,18 @@ public class PipelinePanel extends JPanel { JPanel componentPanel = new JPanel(new BorderLayout(12, 12)); componentPanel.setBorder(createCompoundBorder(createEtchedBorder(), createEmptyBorder(0, 4, 0, 3))); componentPanel.add(new JLabel(controlledComponent.name()), BorderLayout.WEST); - final JLabel titleLabel = new JLabel(controlledComponent.metadata().title()); + final JLabel titleLabel = new JLabel(controlledComponent.metadata().fullTitle()); titleLabel.setFont(titleLabel.getFont().deriveFont(titleLabel.getFont().getSize2D() * 0.8f)); componentPanel.add(titleLabel, BorderLayout.EAST); if (parentComponent != null) { - titleLabel.setVisible(!parentComponent.metadata().title().equals(controlledComponent.metadata().title())); - parentComponent.addMetadataListener(new MetadataListener() { - - @Override - public void metadataUpdated(ControlledComponent component, Metadata metadata) { - titleLabel.setText(metadata.title()); - titleLabel.setVisible(!controlledComponent.metadata().title().equals(metadata.title())); - } - }); + titleLabel.setVisible(!parentComponent.metadata().fullTitle().equals(controlledComponent.metadata().fullTitle())); } controlledComponent.addMetadataListener(new MetadataListener() { @Override public void metadataUpdated(ControlledComponent component, Metadata metadata) { - titleLabel.setText(metadata.title()); - titleLabel.setVisible((parentComponent == null) || !parentComponent.metadata().title().equals(metadata.title())); + titleLabel.setText(metadata.fullTitle()); + titleLabel.setVisible((parentComponent == null) || !parentComponent.metadata().fullTitle().equals(metadata.fullTitle())); } }); return componentPanel;