/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.jlab.groot.graphics;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import org.jlab.groot.tree.Tree;
/**
*
* @author gavalian
*/
public class EmbeddedCanvasTabbed extends JPanel implements ActionListener {
private JTabbedPane tabbedPane = null;
private JPanel actionPanel = null;
private int canvasOrder = 1;
private int iconSizeX = 25;
private int iconSizeY = 25;
private Map tabbedCanvases = new LinkedHashMap();
private int isDynamic = 0;
public EmbeddedCanvasTabbed(){
super();
this.setLayout(new BorderLayout());
this.setMinimumSize(new Dimension(200,200));
this.setSize(400, 500);
initUI();
initBottomBar();
addCanvas();
}
public EmbeddedCanvasTabbed(boolean isStatic){
super();
this.setLayout(new BorderLayout());
this.setMinimumSize(new Dimension(200,200));
this.setSize(400, 500);
this.initUI();
if(isStatic==false){
this.initBottomBar();
}
}
public EmbeddedCanvasTabbed(String... canvases){
super();
this.setLayout(new BorderLayout());
this.setMinimumSize(new Dimension(200,200));
this.setSize(400, 500);
this.initUI();
for(String canvas : canvases){
addCanvas(canvas);
}
}
private void initUI(){
this.tabbedPane = new JTabbedPane();
this.add(tabbedPane,BorderLayout.CENTER);
}
private void initBottomBar(){
actionPanel = new JPanel();
actionPanel.setLayout(new FlowLayout());
this.add(actionPanel,BorderLayout.PAGE_END);
ImageIcon newTabIcon = new ImageIcon();
ImageIcon removeTabIcon = new ImageIcon();
ImageIcon editTabIcon = new ImageIcon();
ImageIcon clearTabIcon = new ImageIcon();
try {
Image addImage = ImageIO.read(Tree.class.getClassLoader().getResource("icons/tree/canvas_add.png"));
Image clearImage = ImageIO.read(Tree.class.getClassLoader().getResource("icons/tree/1477453861_star_full.png"));
Image deleteImage = ImageIO.read(Tree.class.getClassLoader().getResource("icons/tree/canvas_delete.png"));
Image editImage = ImageIO.read(Tree.class.getClassLoader().getResource("icons/tree/1477454132_calendar.png"));
newTabIcon.setImage(addImage.getScaledInstance(iconSizeX, iconSizeY, Image.SCALE_SMOOTH));
clearTabIcon.setImage(clearImage.getScaledInstance(iconSizeX, iconSizeY, Image.SCALE_SMOOTH));
editTabIcon.setImage(editImage.getScaledInstance(iconSizeX, iconSizeY, Image.SCALE_SMOOTH));
removeTabIcon.setImage(deleteImage.getScaledInstance(iconSizeX, iconSizeY, Image.SCALE_SMOOTH));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JButton buttonAdd = new JButton(newTabIcon);
buttonAdd.setActionCommand("add canvas");
buttonAdd.addActionListener(this);
JButton buttonRemove = new JButton(removeTabIcon);
buttonRemove.setActionCommand("remove canvas");
buttonRemove.addActionListener(this);
JButton buttonDivide = new JButton(editTabIcon);
buttonDivide.setActionCommand("divide");
buttonDivide.addActionListener(this);
JButton buttonClear = new JButton(clearTabIcon);
buttonClear.setActionCommand("clear");
buttonClear.addActionListener(this);
actionPanel.add(buttonAdd);
actionPanel.add(buttonRemove);
actionPanel.add(buttonDivide);
actionPanel.add(buttonClear);
}
public EmbeddedCanvas getCanvas(){
int index = tabbedPane.getSelectedIndex();
String title = tabbedPane.getTitleAt(index);
return this.tabbedCanvases.get(title);
}
public EmbeddedCanvas getCanvas(String title){
return this.tabbedCanvases.get(title);
}
public final void addCanvas(){
String name = "canvas" + canvasOrder;
canvasOrder++;
addCanvas(name);
}
public final void addCanvas(String name){
EmbeddedCanvas canvas = new EmbeddedCanvas();
this.tabbedCanvases.put(name, canvas);
tabbedPane.addTab(name, canvas);
tabbedPane.setSelectedComponent(canvas);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().compareTo("add canvas")==0){
addCanvas();
}
if(e.getActionCommand().compareTo("remove canvas")==0){
//addCanvas();
if(JOptionPane.showConfirmDialog(this,
"Are you sure to remove current canvas ?", "Really Removing?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
int index = tabbedPane.getSelectedIndex();
String title = tabbedPane.getTitleAt(index);
tabbedPane.remove(index);
this.tabbedCanvases.remove(title);
}
}
if(e.getActionCommand().compareTo("divide")==0){
String[] options = new String[]{"1","2","3","4","5","6","7"};
JComboBox columns = new JComboBox(options);
JComboBox rows = new JComboBox(options);
columns.setSelectedIndex(this.getCanvas().getNColumns()-1);
rows.setSelectedIndex(this.getCanvas().getNRows()-1);
Object[] message = {
"Columns:", columns,
"Rows:", rows
};
int option = JOptionPane.showConfirmDialog(this, message, "Divide Canvas", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
String stringCOLS = (String) columns.getSelectedItem();
String stringROWS = (String) rows.getSelectedItem();
this.getCanvas().divide(Integer.parseInt(stringCOLS), Integer.parseInt(stringROWS));
//System.out.println("----> Splitting " + columns.getSelectedItem() + " " + rows.getSelectedItem());
}
}
if(e.getActionCommand().compareTo("clear")==0){
getCanvas().clear();
}
}
public static void main(String[] args){
JFrame frame = new JFrame();
EmbeddedCanvasTabbed canvasTab = new EmbeddedCanvasTabbed("TDC","ADC","VALUES");
//EmbeddedCanvasTabbed canvasTab = new EmbeddedCanvasTabbed();
frame.add(canvasTab);
frame.pack();
frame.setMinimumSize(new Dimension(300,300));
frame.setVisible(true);
}
}
Ads help maintain this website.