package com.jpaulmorrison.graphics;
import javax.swing.*;
import java.awt.*;
import java.io.File;
//import java.io.File;
/**
* A JTabbedPane which has a close ('X') icon on each tab.
*
*/
public class JTabbedPaneWithCloseIcons extends JTabbedPane {
static final long serialVersionUID = 111L;
DrawFBP driver;
public JTabbedPaneWithCloseIcons(DrawFBP drawFBP) {
super();
driver = drawFBP;
setFont(driver.fontf); // because diagram names may have Unicode
// characters...
}
public void setSelectedIndex(int i) {
if (i > -1) {
super.setSelectedIndex(i);
ButtonTabComponent b = (ButtonTabComponent) getTabComponentAt(i);
if (b != null && b.diag != null) {
driver.curDiag = b.diag;
driver.frame.setTitle("Diagram: " + driver.curDiag.title);
File f = driver.curDiag.diagFile;
if (f != null) {
File currentDiagramDir = f.getParentFile();
driver.properties
.put("currentDiagramDir", currentDiagramDir.getAbsolutePath());
driver.propertiesChanged = true;
}
if (driver.curDiag != null && driver.curDiag.diagLang != null &&
driver.curDiag.diagLang != driver.defaultCompLang) {
driver.changeLanguage(driver.curDiag.diagLang);
}
}
}
}
public void paint(Graphics g) {
super.paint(g);
int tabno = getSelectedIndex();
for (int i = 0; i < driver.jtp.getTabCount(); i++) {
String s = "";
ButtonTabComponent b = (ButtonTabComponent) getTabComponentAt(i);
Diagram d = b.diag;
driver.jtp.setBackgroundAt(i, Color.LIGHT_GRAY);
if (d == null)
s = "(untitled)";
else if (d.diagFile == null){
if (d.title == null)
s = "(untitled)";
else
s = d.title;
}
else {
if (i == tabno) {
s = d.diagFile.getAbsolutePath();
} else {
s = d.diagFile.getName();
}
}
if (d != null && d.changed)
s = "* " + s;
if (i == tabno) {
driver.jtp.setBackgroundAt(i, Color.WHITE);
}
// c contains JLabel followed by button
JLabel j = (JLabel) b.getComponent(0);
j.setText(s);
}
}
}