/*******************************************************************************
* Copyright 2010 Simon Mieth
*
* 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.apache.org/licenses/LICENSE-2.0
*
* 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 org.kabeja.svg.ui;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JPopupMenu;
public class PopUpButton extends JButton {
private JPopupMenu popupmenu;
private int[] px = new int[3];
private int[] py = new int[3];
public PopUpButton(JPopupMenu menu, String text) {
super(text);
this.popupmenu = menu;
//this.setUI(new BasicButtonUI());
//this.setFocusable(false);
// this.setBorder(new SmallTriangleBorder());
this.setOpaque(false);
this.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Component c = (Component) e.getSource();
popupmenu.show(c, 0, c.getHeight());
}
});
ItemListener l = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
JCheckBoxMenuItem item = (JCheckBoxMenuItem) e.getItem();
setIcon(item.getIcon());
}
}
};
for (int i = 0; i < menu.getComponentCount(); i++) {
Component c = menu.getComponent(i);
if (c instanceof JCheckBoxMenuItem) {
JCheckBoxMenuItem item = (JCheckBoxMenuItem) c;
item.addItemListener(l);
}
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension dim = this.getSize();
int[] px = new int[3];
px[0] = (int) (dim.getWidth() - 7);
py[0] = (int) (dim.getHeight() - 2);
px[1] = px[0] + 5;
py[1] = py[0];
px[2] = px[1];
py[2] = py[0] - 5;
g.setColor(Color.BLACK);
g.fillPolygon(px, py, 3);
}
}