Package de.scoopgmbh.copper.monitoring.client.form.filter.enginefilter

Source Code of de.scoopgmbh.copper.monitoring.client.form.filter.enginefilter.EngineSelectionWidget

/*
* Copyright 2002-2013 SCOOP Software GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.scoopgmbh.copper.monitoring.client.form.filter.enginefilter;

import java.util.List;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.HBox;
import javafx.util.StringConverter;
import de.scoopgmbh.copper.monitoring.client.form.Widget;
import de.scoopgmbh.copper.monitoring.core.model.ProcessingEngineInfo;
import de.scoopgmbh.copper.monitoring.core.model.ProcessingEngineInfo.EngineTyp;
import de.scoopgmbh.copper.monitoring.core.model.ProcessorPoolInfo;

public class EngineSelectionWidget implements Widget{
  private final EnginePoolFilterModel model;
  private final List<ProcessingEngineInfo> engineList;
 
  public EngineSelectionWidget(EnginePoolFilterModel model, List<ProcessingEngineInfo> engineList){
    this.model=model;
    this.engineList = engineList;
  }

  @Override
  public Node createContent() {
    HBox pane = new HBox();
    pane.setAlignment(Pos.CENTER_LEFT);
    pane.setSpacing(3);
    final ChoiceBox<ProcessingEngineInfo> engineChoicebox = createEngineChoicebox();

    final ChoiceBox<ProcessorPoolInfo> poolChoicebox = createPoolChoicebox();
    pane.getChildren().add(new Label("Engine"));
    pane.getChildren().add(engineChoicebox);
    pane.getChildren().add(new Label("Pool"));
    pane.getChildren().add(poolChoicebox);
   
    engineChoicebox.getSelectionModel().selectFirst();
    return pane;
  }

  public ChoiceBox<ProcessingEngineInfo> createEngineChoicebox() {
    final ChoiceBox<ProcessingEngineInfo> engineChoicebox = new ChoiceBox<ProcessingEngineInfo>();
    engineChoicebox.setTooltip(new Tooltip("ProcessingEngine"));
    for (ProcessingEngineInfo engineFilter: engineList){
      engineChoicebox.getItems().add(engineFilter);
    }
    engineChoicebox.setConverter(new StringConverter<ProcessingEngineInfo>() {
      @Override
      public String toString(ProcessingEngineInfo object) {
        return object.getId()+"("+(object.getTyp()==EngineTyp.PERSISTENT?"P":"T")+")";
      }
     
      @Override
      public ProcessingEngineInfo fromString(String string) {
        return null;
      }
    });
    engineChoicebox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<ProcessingEngineInfo>() {
      @Override
      public void changed(ObservableValue<? extends ProcessingEngineInfo> observable, ProcessingEngineInfo oldValue,
          ProcessingEngineInfo newValue) {
        model.selectedEngine.setValue(newValue);
      }
    });
    model.selectedEngine.addListener(new ChangeListener<ProcessingEngineInfo>() {
      @Override
      public void changed(ObservableValue<? extends ProcessingEngineInfo> observable, ProcessingEngineInfo oldValue,
          ProcessingEngineInfo newValue) {
        updateEngineChoicebox(engineChoicebox, newValue);
      }
    });
    updateEngineChoicebox(engineChoicebox, model.selectedEngine.get());
   
    return engineChoicebox;
  }

  public ChoiceBox<ProcessorPoolInfo> createPoolChoicebox() {
    final ChoiceBox<ProcessorPoolInfo> poolChoicebox = new ChoiceBox<ProcessorPoolInfo>();
    poolChoicebox.setTooltip(new Tooltip("ProcessorPool"));
   
    model.selectedEngine.addListener(new ChangeListener<ProcessingEngineInfo>() {
      @Override
      public void changed(ObservableValue<? extends ProcessingEngineInfo> observable, ProcessingEngineInfo oldValue, ProcessingEngineInfo newValue) {
        updatePoolChoiceBox(poolChoicebox, newValue);
      }
    });
    updatePoolChoiceBox(poolChoicebox,model.selectedEngine.get());
   
    poolChoicebox.setConverter(new StringConverter<ProcessorPoolInfo>() {
      @Override
      public String toString(ProcessorPoolInfo object) {
        if (object==null) return "any";
        return object.getId();
      }
     
      @Override
      public ProcessorPoolInfo fromString(String string) {
        return null;
      }
    });
   
    poolChoicebox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<ProcessorPoolInfo>() {
      @Override
      public void changed(ObservableValue<? extends ProcessorPoolInfo> observable, ProcessorPoolInfo oldValue,
          ProcessorPoolInfo newValue) {
        model.selectedPool.setValue(newValue);
      }
    });
   
    model.selectedPool.addListener(new ChangeListener<ProcessorPoolInfo>() {
      @Override
      public void changed(ObservableValue<? extends ProcessorPoolInfo> observable, ProcessorPoolInfo oldValue,
          ProcessorPoolInfo newValue) {
        updatePoolChoicebox(poolChoicebox, newValue);
      }
    });
   
    updatePoolChoicebox(poolChoicebox, model.selectedPool.get());
    poolChoicebox.getSelectionModel().select(null);
    return poolChoicebox;
  }
 
  private void updateEngineChoicebox(final ChoiceBox<ProcessingEngineInfo> engineChoicebox, ProcessingEngineInfo newValue) {
    if (newValue != null) {
      for (ProcessingEngineInfo processingEngineInfo : engineChoicebox.getItems()) {
        if (processingEngineInfo.getId() != null && processingEngineInfo.getId().equals(newValue.getId())) {
          engineChoicebox.getSelectionModel().select(processingEngineInfo);
        }
      }
    } else {
      engineChoicebox.getSelectionModel().clearSelection();
    }
  }
 
  private void updatePoolChoicebox(final ChoiceBox<ProcessorPoolInfo> poolChoicebox, ProcessorPoolInfo newValue) {
    if (newValue!=null){
      for (ProcessorPoolInfo pool: poolChoicebox.getItems()){
        if (pool!=null && pool.getId()!=null && pool.getId().equals(newValue.getId())){
          poolChoicebox.getSelectionModel().select(pool);
        }
      }
    } else {
      poolChoicebox.getSelectionModel().clearSelection();
    }
  }
 
  private void updatePoolChoiceBox(final ChoiceBox<ProcessorPoolInfo> poolChoicebox, ProcessingEngineInfo newValue) {
    if (newValue!=null){
      poolChoicebox.getItems().clear();
      poolChoicebox.getItems().add(null);
      for (ProcessorPoolInfo processorPoolInfo: newValue.getPools()){
        poolChoicebox.getItems().add(processorPoolInfo);
      }
      model.selectedPool.set(null);
      if (!newValue.getPools().isEmpty()){
        model.selectedPool.set(newValue.getPools().get(0));
      }
    }
  }
}
TOP

Related Classes of de.scoopgmbh.copper.monitoring.client.form.filter.enginefilter.EngineSelectionWidget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.