X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fgui%2FPipelinePanel.java;h=d47003d223d01c5058969eaac568f29f7962c1bd;hb=cad21ef42edbedab7193b68a0d927097bb956ec0;hp=83041f1b5d1d53466cbeab9415733902f08c8ef4;hpb=fef59d129e380ca5a03d4063563b4db06e34191c;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 83041f1..d47003d 100644 --- a/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java +++ b/src/main/java/net/pterodactylus/sonitus/gui/PipelinePanel.java @@ -22,6 +22,8 @@ import static javax.swing.BorderFactory.createEmptyBorder; import static javax.swing.BorderFactory.createEtchedBorder; import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; @@ -30,8 +32,10 @@ import java.awt.event.MouseEvent; import java.util.Collection; import java.util.EventListener; import java.util.logging.Logger; +import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.UIManager; import javax.swing.event.EventListenerList; import net.pterodactylus.sonitus.data.ControlledComponent; @@ -55,7 +59,10 @@ public class PipelinePanel extends JPanel { private final Pipeline pipeline; /** The component hover listeners. */ - private final EventListenerList componentHoverListeners = new EventListenerList(); + private final EventListenerList componentSelectionListeners = new EventListenerList(); + + /** The currently selected component. */ + private JComponent selectedComponent; /** * Creates a new pipeline panel displaying the given pipeline. @@ -74,13 +81,13 @@ public class PipelinePanel extends JPanel { // /** - * Adds the given component hover listener to this panel. + * Adds the given component selection listener to this panel. * - * @param componentHoverListener - * The component hover listener to add + * @param componentSelectionListener + * The component selection listener to add */ - public void addComponentHoverListener(ComponentHoverListener componentHoverListener) { - componentHoverListeners.add(ComponentHoverListener.class, componentHoverListener); + public void addComponentHoverListener(ComponentSelectionListener componentSelectionListener) { + componentSelectionListeners.add(ComponentSelectionListener.class, componentSelectionListener); } // @@ -131,13 +138,32 @@ public class PipelinePanel extends JPanel { */ private void addControlled(final ControlledComponent controlledComponent, int level, int position, int width, ControlledComponent parentComponent) { /* create a GUI component that displays the component. */ - JPanel componentPanel = createComponentPanel(controlledComponent, parentComponent); + final JPanel componentPanel = createComponentPanel(controlledComponent, parentComponent); componentPanel.addMouseListener(new MouseAdapter() { @Override + public void mouseClicked(MouseEvent e) { + for (Component component : getComponents()) { + component.setBackground(UIManager.getColor("Panel.background")); + } + for (ComponentSelectionListener componentSelectionListener : componentSelectionListeners.getListeners(ComponentSelectionListener.class)) { + componentPanel.setBackground(Color.LIGHT_GRAY); + componentSelectionListener.componentSelected(controlledComponent); + } + selectedComponent = componentPanel; + } + + @Override public void mouseEntered(MouseEvent mouseEvent) { - for (ComponentHoverListener componentHoverListener : componentHoverListeners.getListeners(ComponentHoverListener.class)) { - componentHoverListener.componentEntered(controlledComponent); + if (componentPanel != selectedComponent) { + componentPanel.setBackground(Color.white); + } + } + + @Override + public void mouseExited(MouseEvent mouseEvent) { + if (componentPanel != selectedComponent) { + componentPanel.setBackground(UIManager.getColor("Panel.background")); } } }); @@ -180,14 +206,6 @@ public class PipelinePanel extends JPanel { componentPanel.add(titleLabel, BorderLayout.EAST); if (parentComponent != null) { titleLabel.setVisible(!parentComponent.metadata().fullTitle().equals(controlledComponent.metadata().fullTitle())); - parentComponent.addMetadataListener(new MetadataListener() { - - @Override - public void metadataUpdated(ControlledComponent component, Metadata metadata) { - titleLabel.setText(metadata.title()); - titleLabel.setVisible(!controlledComponent.metadata().title().equals(metadata.title())); - } - }); } controlledComponent.addMetadataListener(new MetadataListener() { @@ -206,7 +224,7 @@ public class PipelinePanel extends JPanel { * * @author David ‘Bombe’ Roden */ - public static interface ComponentHoverListener extends EventListener { + public static interface ComponentSelectionListener extends EventListener { /** * Notifies the listener that the mouse is now over the given controlled @@ -215,7 +233,7 @@ public class PipelinePanel extends JPanel { * @param controlledComponent * The controlled component now under the mouse */ - void componentEntered(ControlledComponent controlledComponent); + void componentSelected(ControlledComponent controlledComponent); }