public class DHPFunkContainer implements Observer{
private ArrayList<DHPFunkFensterModell> FunkFensterListe = null;
private ArrayList<DHPFunkPopup> FunkPopupListe = null;
private DHPFunkFensterModell [] AngedocktePanels = null;
private FunkComponent FunkContainer = null;
private DHPNeuFunkPopup NeuFunkPopup = null;
private boolean Loaded = false;
private int Hoehe = 0;
public FunkComponent getFunkContainer(int x, int y, int w, int h) {
Hoehe = h;
if (FunkContainer == null){
FunkFensterListe = new ArrayList<DHPFunkFensterModell>();
FunkPopupListe = new ArrayList<DHPFunkPopup>();
AngedocktePanels = new DHPFunkFensterModell[getFreiKanalListe().size()];
FunkContainer = new FunkComponent(x,y,w,h, 0);
// Load default FunkFenster
for (String str : DHPAsgard.getDBLayer().getApplicationInfos("FUNKKANAELE").split(";"))
createFunkFenster(str);
Loaded = true;
}
return FunkContainer;
}
...
@Override
public void update(Observable obs, Object arg) {
// NUR FÜR BESTEHENDE KANAELE
for (DHPFunkFensterModell model : FunkFensterListe)
if (obs == model){
if (model.isZuSchliessen()){
deleteModel(model);
return;
}
if (model.isZumPopup()){
moveToPopup(model);
return;
}
if (model.isZumAndocken()){
dockBack(model);
return;
}
if (model.getTastenZustand() == Zustand.FREI){
model.setText("");
model.getFunkPanel().getActionButton().setButtonColor(DHP_GUI_Constants.FP_FREI);
model.getFunkPanel().setRichtung(FunkFenster.KEIN_PFEIL);
// model.getFunkPanel().setMainText("");
model.getFunkPanel().setFunctionality(true);
model.getFunkPanel().refresh();
return;
}
if (model.getTastenZustand() == Zustand.EIGENBENUTZUNG){
model.getFunkPanel().getActionButton().setButtonColor(DHP_GUI_Constants.FP_EIGENBENUTZUNG);
model.getFunkPanel().setRichtung(FunkFenster.INTERN);
model.getFunkPanel().setFunctionality(true);
model.getFunkPanel().refresh();
return;
}
if (model.getTastenZustand() == Zustand.FREMDBELEGT_INTERN){
model.getFunkPanel().getActionButton().setButtonColor(DHP_GUI_Constants.FP_FREMDBELEGT);
model.getFunkPanel().setRichtung(FunkFenster.INTERN);
model.getFunkPanel().setFunctionality(false);
model.getFunkPanel().refresh();
return;
}
if (model.getTastenZustand() == Zustand.FREMDBELEGT_EXTERN){
model.getFunkPanel().getActionButton().setButtonColor(DHP_GUI_Constants.FP_FREMDBELEGT);
model.getFunkPanel().setRichtung(FunkFenster.EXTERN);
model.getFunkPanel().setFunctionality(false);
model.getFunkPanel().refresh();
return;
}
}
// NUR FÜR NEUE FUNKFENSTERN
if (obs instanceof DHPFunkFensterModell)
addModel((DHPFunkFensterModell)obs);
}
...
protected void dockBack(DHPFunkFensterModell model){
model.setZumAndocken(false);
deletePopup(model);
addAngedockt(model);
updateFunkContainer();
}
protected void moveToPopup(DHPFunkFensterModell model){
model.setZumPopup(false);
deteleAngedockt(model);
updateFunkContainer();
DHPFunkPopup popup = new DHPFunkPopup(model);
model.refresh(); // TODO
FunkPopupListe.add(popup);
DHPAsgard.getMainFrame().getLayeredPane().add(popup);
popup.hide();
popup.show();
}
...
private void updateFunkContainer(){
for (Component element : FunkContainer.FunkFeld.getComponents()){
if (element instanceof DHPFunkPanel){
FunkContainer.FunkFeld.remove(element);
}
}
for (DHPFunkFensterModell model : FunkFensterListe){
if (model.isAngedockt()){
DHPFunkPanel panel = new DHPFunkPanel(model);
model.setFunkPanel(panel);
model.refresh();
FunkContainer.FunkFeld.add(panel);
FunkContainer.FunkFeld.setSize(getFunkfeldSize());
FunkContainer.FunkFeld.setPreferredSize(getFunkfeldSize());
}
}
if (NeuFunkPopup != null && NeuFunkPopup.isVisible())
NeuFunkPopup.updateModel();
FunkContainer.FunkFeld.repaint();
FunkContainer.repaint();
}
...
}