private void programmStarten(Programm programmObjekt) {
if (!(programmObjekt == null || programmObjekt.equals(""))) {
try {
if (programmObjekt.getProgrammTyp() != 0
&& programmObjekt.getProgrammKlasse() != null) {
PersonalBerechtigung berechtigung = this
.getBerechtigung(programmObjekt);
if (berechtigung != null) {
Class<?> klasse = Class.forName(programmObjekt
.getProgrammKlasse());
edStatusBar.getProgressBars().get(1).setVisible(true);
edStatusBar.getProgressBars().get(1).setMinimum(0);
edStatusBar.getProgressBars().get(1).setMaximum(100);
this.addStatusMeldung(MeldungsTyp.NORMAL, "Starte: "
+ programmObjekt.getProgrammInfoText());
edStatusBar.getProgressBars().get(1).setValue(10);
this.addStatusMeldung(
MeldungsTyp.NORMAL,
"Erstelle Instanz von: "
+ programmObjekt.getProgrammInfoText());
edStatusBar.getProgressBars().get(1).setValue(20);
Object obj = klasse.newInstance();
this.addStatusMeldung(MeldungsTyp.NORMAL,
"Übergabe der Statusbarreferenz an das Programm");
edStatusBar.getProgressBars().get(1).setValue(70);
if (obj instanceof ProgrammInterface) {
ProgrammInterface programmInterface = (ProgrammInterface) obj;
if (berechtigung.getBerechtigung() == 1) {
programmInterface.setEditierbar(true);
} else {
programmInterface.setEditierbar(false);
}
programmInterface
.setBerechtigung(berechtigungsListe);
programmInterface
.setProgrammListe(this.programmListe);
programmInterface
.setMitarbeiterID(this.mitarbeiterID);
programmInterface.setProgramm(programmObjekt);
}
if (obj instanceof EDStatusBarInterface) {
EDStatusBarInterface statusBar = (EDStatusBarInterface) obj;
statusBar.setEDStatusBar(edStatusBar);
}
if (obj instanceof MeldungenInterface) {
MeldungenInterface meldungInterface = (MeldungenInterface) obj;
meldungInterface.setTableMeldungen(panelExplorer
.getPanelMeldungen().getTableMeldungen());
}
if (obj instanceof FavoritenChangeListenerAddRemove) {
FavoritenChangeListenerAddRemove listenerAdd = (FavoritenChangeListenerAddRemove) obj;
listenerAdd
.addFavoritenChangeListener(new FavoritenChangeListener() {
public void stateChanged(
FavoritenChangeEvent e) {
setFavoritButtonEnabled(e
.getProgrammFavorit());
}
});
}
if (obj instanceof DBChangeListener) {
DBChangeListener changeListener = (DBChangeListener) obj;
for (Object programm : programme) {
if (programm instanceof DBChangeListenerAddRemove) {
DBChangeListenerAddRemove listenerAdd = (DBChangeListenerAddRemove) programm;
listenerAdd
.addDBChangeListener(changeListener);
}
}
// Falls Panel sowohl DBChangeListener als auch
// DBChangeListenerAddRemove implementiert
if (changeListener instanceof DBChangeListenerAddRemove) {
DBChangeListenerAddRemove listenerAdd = (DBChangeListenerAddRemove) changeListener;
listenerAdd.addDBChangeListener(changeListener);
}
}
if (obj instanceof DBChangeListenerAddRemove) {
DBChangeListenerAddRemove listenerAdd = (DBChangeListenerAddRemove) obj;
for (Object programm : programme) {
if (programm instanceof DBChangeListener) {
DBChangeListener changeListener = (DBChangeListener) programm;
listenerAdd
.addDBChangeListener(changeListener);
}
}
listenerAdd
.addDBChangeListener(new DBChangeListener() {
@Override
public void stateChanged(DBChangeEvent e) {
if (e.getTabellenName().equals(
"programm_log")) {
try {
panelExplorer
.getPanelVerlauf()
.refreshTable();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
});
}
if (obj instanceof ProgrammStartListenerAddRemove) {
ProgrammStartListenerAddRemove progrStartInterface = (ProgrammStartListenerAddRemove) obj;
progrStartInterface
.addProgrammStartListener(new ProgrammStartListener() {
@Override
public void startProgramm(
ProgrammStartEvent e) {
programmStarten(e.getProgramm());
if (tabbedPaneProgrammme
.getSelectedComponent() instanceof EDToolBarMethoden) {
EDToolBarMethoden toolBarMethoden = (EDToolBarMethoden) tabbedPaneProgrammme
.getSelectedComponent();
if (e.getObjektID() != null
&& !e.getObjektID()
.equals("")) {
toolBarMethoden
.auffrischen(new String[] { e
.getObjektID() });
}
}
}
});
}
if (obj instanceof EDToolBarMethoden) {
EDToolBarMethoden toolBarMethoden = (EDToolBarMethoden) obj;
if (programmObjekt instanceof ProgrammFavorit) {
ProgrammFavorit programmFavorit = (ProgrammFavorit) programmObjekt;
if (!(programmFavorit.getProgrammSchluesselID() == null || programmFavorit
.getProgrammSchluesselID().equals(""))) {
toolBarMethoden
.auffrischen(new String[] { programmFavorit
.getProgrammSchluesselID() });
}
}
}
this.programme.add(obj);
this.addStatusMeldung(MeldungsTyp.NORMAL,
"Erstellen eines neuen Tabs und Einbettung des Programms");
edStatusBar.getProgressBars().get(1).setValue(80);
String name = programmObjekt.getProgrammInfoText()
+ " (" + tabbedPaneProgrammme.getTabCount()
+ ")"; // TODO Nummern ab 1 beginnend und pro
// "Programm-Typ"? Also erst dann
// Nummerieren wenn z.B.
// zwei mal "Belege suchen" geöffnet ist
tabbedPaneProgrammme.addTab(name, (JPanel) obj);
tabbedPaneProgrammme.setTabComponentAt(
tabbedPaneProgrammme
.indexOfComponent((JPanel) obj),
new ButtonCloseTab(tabbedPaneProgrammme,
programme));
this.addStatusMeldung(MeldungsTyp.NORMAL,
"Neuen Tab selektieren");
edStatusBar.getProgressBars().get(1).setValue(90);
if (tabbedPaneProgrammme.getTabCount() == 1) {
tabbedPaneProgrammme.setSelectedIndex(-1);
}
tabbedPaneProgrammme.setSelectedComponent((JPanel) obj);
this.addStatusMeldung(
MeldungsTyp.NORMAL,
"Programm gestartet: "
+ programmObjekt.getProgrammInfoText());
edStatusBar.getProgressBars().get(1).setValue(100);
Thread.sleep(200);
edStatusBar.getProgressBars().get(1).setValue(0);
edStatusBar.getProgressBars().get(1).setVisible(false);
this.addMeldungen(
MeldungsTyp.OK,
"Programm gestartet: "
+ programmObjekt.getProgrammInfoText());
} else {
this.addMeldungen(MeldungsTyp.WARNUNG, "Programm "
+ programmObjekt.getProgrammInfoText()
+ " konnte aufgrund mangelnder "
+ "Rechte nicht gestartet werden");
}
}
} catch (Exception e1) {
// if (e1 instanceof EDMessageException) {
// EDMessageException e2 = (EDMessageException) e1;
//
// }
e1.printStackTrace();
this.addMeldungen(
MeldungsTyp.FEHLER,
"Fehler beim Starten des Programms "
+ programmObjekt.getProgrammInfoText() + ": "
+ e1.getMessage());
edStatusBar.getLabelInfo().setText(
"Fehler beim Starten des Programms "
+ programmObjekt.getProgrammInfoText() + ": "
+ e1.getMessage());
edStatusBar.getProgressBars().get(0).setValue(0);
edStatusBar.getProgressBars().get(1).setValue(0);
edStatusBar.getProgressBars().get(0).setVisible(false);
edStatusBar.getProgressBars().get(1).setVisible(false);
}
}
this.meldungen.addMeldungenToTable();
}