/** * Copyright (C) 2015 Orange * 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 com.francetelecom.clara.cloud.presentation.environments; import com.francetelecom.clara.cloud.services.dto.EnvironmentDto; import com.francetelecom.clara.cloud.services.dto.EnvironmentDto.EnvironmentStatusEnum; import org.apache.wicket.AttributeModifier; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; public class EnvironmentPercentPanel<E extends EnvironmentDto> extends GenericPanel<E> { private static final long serialVersionUID = 5770483727834173216L; private Label envStatusPercentLabel; private Label envStatusLabel; private Label envStatusLabelAlone; public EnvironmentPercentPanel(String id, IModel<E> model) { super(id, model); createComponent(); } @Override protected void onModelChanged() { EnvironmentStatusEnum envStatus = getModelObject().getStatus(); int envStatusPercent = getModelObject().getStatusPercent() >= 0 ? getModelObject().getStatusPercent() : 0; envStatusPercentLabel.setDefaultModelObject(envStatusPercent); envStatusLabel.setDefaultModelObject(envStatus); envStatusLabelAlone.setDefaultModelObject(envStatus); } private void createComponent() { EnvironmentStatusEnum envStatus = getModelObject().getStatus(); int envStatusPercent = getModelObject().getStatusPercent() >= 0 ? getModelObject().getStatusPercent() : 0; envStatusPercentLabel = new Label("env-percent-label", new Model<Integer>(envStatusPercent)); envStatusLabel = new Label("env-status-label", new Model<EnvironmentStatusEnum>(envStatus)); envStatusLabelAlone = new Label("env-status-label-alone", new Model<EnvironmentStatusEnum>(envStatus)); /** % bar **/ final WebMarkupContainer envBar = new WebMarkupContainer("env-bar"); /** scrollbar */ WebMarkupContainer envScrollbar = new WebMarkupContainer("env-scrollbar") { @Override public boolean isVisible() { if (getModelObject().getStatus().name().endsWith("ING") && !getModelObject().getStatus().equals(EnvironmentStatusEnum.RUNNING)) { return true; } else { return false; } } @Override protected void onBeforeRender() { super.onBeforeRender(); envBar.add(new AttributeModifier("style", new Model<String>("width:" + envStatusPercentLabel.getDefaultModelObjectAsString() + "%; background-color:green;white-space:nowrap"))); envBar.add(new AttributeModifier("title", new Model<String>(getModelObject().getStatusMessage()))); } }; /** Percent **/ envBar.add(envStatusPercentLabel); /** Status **/ envBar.add(envStatusLabel); envScrollbar.add(envBar); add(envScrollbar); WebMarkupContainer envStatusContainer = new WebMarkupContainer("env-status-container") { @Override public boolean isVisible() { if (envStatusLabelAlone.getDefaultModelObjectAsString().endsWith("ING") && !envStatusLabelAlone.getDefaultModelObject().equals(EnvironmentStatusEnum.RUNNING)) { return false; } else { return true; } } }; envStatusContainer.add(envStatusLabelAlone); add(envStatusContainer); } }