public class DateienEinlesen extends JFrame {
private static final long serialVersionUID = 5939729178368289077L;
protected JTree jt;
protected DefaultTreeModel jtm;
private VerwaltungsIO vwio;
private VerwaltungsIO parent;
private Katalog topLevelKatalog;
public static JTextArea BESCHREIBUNGS_FENSTER;
private DateienEinlesen derFrame = null;
private Knoten zuletztKopierterKnoten;
public DateienEinlesen() {
super("Verzeichnisinhalte!");
derFrame = this;
}
public static void main(String[] args) {
DateienEinlesen de = new DateienEinlesen();
de.init(args);
de.setVisible(true);
}
private void init(String args[]) {
this.setSize(500, 400);
this.addWindowListener(new DateienEinlesenEventHandler());
if (args.length < 1) {
System.out.println("Verzeichnisliste und Katalog fehlen!");
System.exit(-1);
} else {
vwio = new VerwaltungsIO(args[0]);
if (args.length > 1) {
topLevelKatalog = new Katalog("StartKatalog");
for (int i = 0; i < args.length; i++) {
vwio.baumEinlesen(topLevelKatalog, args[i]);
}
vwio.speichern(topLevelKatalog);
} else {
topLevelKatalog = (Katalog) vwio.lesen();
}
if (topLevelKatalog != null) {
initContentPane();
initMenuBar();
} else {
System.exit(-1);
}
}
}
private void initMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu katMenu = new JMenu("KatalogVerwaltung");
JMenu closeMenu = new JMenu("Operationen");
MenuItemHandler mih = new MenuItemHandler();
katMenu.add(this.createNewMenuItem(Konstanten.NeuKatalog, mih));
katMenu.add(this.createNewMenuItem(Konstanten.NeuBild, mih));
katMenu.add(this.createNewMenuItem(Konstanten.NeuTon, mih));
katMenu.add(this.createNewMenuItem(Konstanten.Kopie, mih));
katMenu.add(this.createNewMenuItem(Konstanten.Entfernen, mih));
katMenu.add(this.createNewMenuItem(Konstanten.Eintragen, mih));
katMenu.add(this.createNewMenuItem(Konstanten.Modifizieren, mih));
menuBar.add(katMenu);
this.setJMenuBar(menuBar);
}
private void initContentPane() {
jtm = new DefaultTreeModel(topLevelKatalog);
jt = new JTree(jtm);
jt.setEditable(true);
jt.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
jt.addMouseListener(new TreeHandlerMaus());
jt.addKeyListener(new TreeHandlerTastatur());
JScrollPane scrPane = new JScrollPane();
scrPane.getViewport().add(jt);
this.getContentPane().setLayout(new java.awt.BorderLayout());
this.getContentPane().add(java.awt.BorderLayout.CENTER, scrPane);
BESCHREIBUNGS_FENSTER = new JTextArea(
"Hierhin kommt die Beschreibung des \n"
+ "zuletzt ausgegebenen Dokuments!");
scrPane = new JScrollPane();
scrPane.getViewport().add(BESCHREIBUNGS_FENSTER);
this.getContentPane().add(java.awt.BorderLayout.SOUTH, scrPane);
}
private JMenuItem createNewMenuItem(String name, MenuItemHandler mih) {
JMenuItem result = new JMenuItem(name);
result.addActionListener(mih);
return result;
}
public class TreeHandlerTastatur extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
JTree jt = (JTree) e.getComponent();
if (jt.getSelectionCount() == 1) {
TreePath selPath = jt.getSelectionPath();
Knoten kn = (Knoten) selPath.getLastPathComponent();
if (kn instanceof Dokument) {
((Dokument) kn).ausgeben();
}
}
}
}
}
public class TreeHandlerMaus extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
JTree jt = (JTree) e.getComponent();
int selRow = jt.getRowForLocation(e.getX(), e.getY());
TreePath selPath = jt.getPathForLocation(e.getX(), e.getY());
if (selRow != -1) {
if (e.getClickCount() == 2) {
Knoten kn = (Knoten) selPath.getLastPathComponent();
if (kn instanceof Dokument) {
((Dokument) kn).ausgeben();
}
}
}
}
}
public class DateienEinlesenEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
if (vwio != null)
vwio.speichern(topLevelKatalog);
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}
}
private void admAndInsert(Knoten kn, Knoten neuDok) {
Administration adm = new Administration(derFrame, neuDok);
if (adm.werteGeaendert()) {
jtm.insertNodeInto(neuDok, kn, kn.getChildCount());
jt.scrollPathToVisible(new TreePath(kn.getPath()));
}
}
class MenuItemHandler implements ActionListener{
public void actionPerformed (ActionEvent e){
String actionCommand = e.getActionCommand();
TreePath selPath = jt.getSelectionPath();
if(selPath != null){
Knoten kn = (Knoten)selPath.getLastPathComponent();
if(actionCommand.equals(Konstanten.NeuKatalog)){
if(kn instanceof Katalog){
Katalog neuDok = new Katalog("");
Administration adm = new Administration(derFrame, neuDok);
if(adm.werteGeaendert()){
jtm.insertNodeInto(neuDok, kn, kn.getChildCount());
jt.scrollPathToVisible(new TreePath(kn.getPath()));
}
}else{
DateienEinlesen.BESCHREIBUNGS_FENSTER.setText("Neuer Katalog kann nur in einem Katalog angelegt werden!");
}
}else
if(actionCommand.equals(Konstanten.NeuBild)){
if(kn instanceof Katalog){
Dokument neuDok = new BildDokument("", "", "");
Administration adm = new Administration(derFrame, neuDok);
if(adm.werteGeaendert()){
jtm.insertNodeInto(neuDok, kn, kn.getChildCount());
jt.scrollPathToVisible(new TreePath(kn.getPath()));
}
usw.