/* * Copyright 2004-2010 Information & Software Engineering Group (188/1) * Institute of Software Technology and Interactive Systems * Vienna University of Technology, Austria * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.ifs.tuwien.ac.at/dm/somtoolbox/license.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package at.tuwien.ifs.somtoolbox.apps.viewer.controls; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.logging.Logger; import javax.swing.JLabel; import at.tuwien.ifs.somtoolbox.apps.viewer.CommonSOMViewerStateData; import at.tuwien.ifs.somtoolbox.visualization.Palette; /** * Implements a graphical elements displaying the currently used {@link Palette}. * * @author Rudolf Mayer * @version $Id: PalettePanel.java 3873 2010-10-28 09:29:58Z frank $ */ public class PalettePanel extends AbstractViewerControl implements ComponentListener { private static final long serialVersionUID = 1L; static final int BORDER = 10; private final JLabel noPalette = new JLabel("No palette loaded!"); private PaletteDisplayer drawPalettePanel = null; public PalettePanel(String title, CommonSOMViewerStateData state) { super(title, state, new BorderLayout()); setPalette(null); addComponentListener(this); } public void setPalette(Color[] palette) { setPalette(palette, -1, -1); } public void setPalette(Color[] palette, double minValue, double maxValue) { getContentPane().removeAll(); if (palette != null) { if (drawPalettePanel == null) { drawPalettePanel = new PaletteDisplayer(new Palette("", "", "", palette)); drawPalettePanel.setToolTipText("Click to switch scale between absolute and relative values"); drawPalettePanel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { drawPalettePanel.setShowPercent(!drawPalettePanel.getShowPercent()); } }); } else { drawPalettePanel.setPalette(new Palette("", "", "", palette)); } drawPalettePanel.setRange(minValue, maxValue); getContentPane().add(drawPalettePanel, BorderLayout.CENTER); } else { getContentPane().add(noPalette, BorderLayout.CENTER); setCollapsed(true); } revalidate(); repaint(); } public Color[] getPalette() { return drawPalettePanel.getPalette().getColors(); } @Override public void componentResized(ComponentEvent e) { Logger.getLogger("at.tuwien.ifs.somtoolbox").fine("component resized called"); if (drawPalettePanel != null) { // drawPalettePanel.adjustPaletteSize(); repaint(); } } @Override public void componentHidden(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { } @Override public void componentShown(ComponentEvent e) { } }