/*
* Copyright 2015 Tomi Virtanen
*
* 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 org.tltv.gantt.client;
import org.tltv.gantt.SubStepComponent;
import org.tltv.gantt.client.shared.SubStepState;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.TooltipInfo;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.ui.AbstractComponentConnector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.ContentMode;
@Connect(SubStepComponent.class)
public class SubStepConnector extends AbstractComponentConnector {
private StepWidget step;
@Override
protected Widget createWidget() {
return GWT.create(SubStepWidget.class);
}
@Override
public SubStepWidget getWidget() {
return (SubStepWidget) super.getWidget();
}
@Override
public SubStepState getState() {
return (SubStepState) super.getState();
}
@Override
protected void updateComponentSize() {
// nop. Component size is handled independently without LayouManager.
}
@Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
if (!(getParent() instanceof StepConnector)) {
return;
}
if (step == null) {
step = ((StepConnector) getParent()).getWidget();
getWidget().setOwner(step);
}
if (stateChangeEvent.hasPropertyChanged("step")) {
getWidget().setStep(getState().step);
}
if (!getWidget().getElement().hasParentElement()) {
step.add(getWidget());
getWidget().getOwner().updateStylesForSubSteps();
}
getWidget().updateWidth();
}
@Override
public TooltipInfo getTooltipInfo(Element element) {
return new TooltipInfo(getState().step.getDescription(), ContentMode.HTML, getState().errorMessage);
}
@Override
public boolean hasTooltip() {
// Normally, there is a tooltip if description or errorMessage is set
SubStepState state = getState();
if (state == null) {
return false;
}
if (state.step != null && state.step.getDescription() != null && !state.step.getDescription().equals("")) {
return true;
} else if (state.errorMessage != null && !state.errorMessage.equals("")) {
return true;
} else {
return false;
}
}
}