blob: fadef8e8d4d06585138fd3434eda0b54b1e69015 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pierre Allard,
* Regent L'Archeveque - initial API and implementation
*
* SPDX-License-Identifier: EPL-1.0
*******************************************************************************/
package org.eclipse.apogy.core.ui.parts;
import org.eclipse.apogy.core.invocator.ApogyCoreInvocatorFacade;
import org.eclipse.apogy.core.invocator.ApogyCoreInvocatorFactory;
import org.eclipse.apogy.core.invocator.InvocatorSession;
import org.eclipse.apogy.core.invocator.VariableFeatureReference;
import org.eclipse.apogy.core.invocator.VariablesList;
import org.eclipse.apogy.core.invocator.ui.ApogyCoreInvocatorUIFacade;
import org.eclipse.apogy.core.invocator.ui.parts.AbstractSessionBasedPart;
import org.eclipse.apogy.core.ui.ApogyCoreUIRCPConstants;
import org.eclipse.apogy.core.ui.composites.ApogySystemPoseComparativeComposite;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VariableComparativePosePart extends AbstractSessionBasedPart {
private static final Logger Logger = LoggerFactory.getLogger(VariableComparativePosePart.class);
private double trip1Distance = 0.0;
private double trip2Distance = 0.0;
private ApogySystemPoseComparativeComposite apogySystemPoseComposite;
private VariableFeatureReference variable1FeatureReference = ApogyCoreInvocatorFactory.eINSTANCE
.createVariableFeatureReference();
private VariableFeatureReference variable2FeatureReference = ApogyCoreInvocatorFactory.eINSTANCE
.createVariableFeatureReference();
@Override
protected void newInvocatorSession(InvocatorSession invocatorSession) {
if (invocatorSession != null) {
if (this.apogySystemPoseComposite != null) {
this.apogySystemPoseComposite.setVariableList(invocatorSession.getEnvironment().getVariablesList());
VariableFeatureReference vfr1 = (VariableFeatureReference) ApogyCoreInvocatorUIFacade.INSTANCE
.readFromPersistedState(this.mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_1);
if (vfr1 != null) {
this.variable1FeatureReference = vfr1;
this.apogySystemPoseComposite.setVariableFeatureReference1(vfr1);
}
VariableFeatureReference vfr2 = (VariableFeatureReference) ApogyCoreInvocatorUIFacade.INSTANCE
.readFromPersistedState(this.mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_2);
if (vfr2 != null) {
this.variable2FeatureReference = vfr2;
this.apogySystemPoseComposite.setVariableFeatureReference2(vfr2);
}
}
}
}
@Override
protected void createContentComposite(Composite parent, int style) {
parent.setLayout(new FillLayout());
VariablesList variables = null;
if (ApogyCoreInvocatorFacade.INSTANCE.getActiveInvocatorSession() != null
&& ApogyCoreInvocatorFacade.INSTANCE.getActiveInvocatorSession().getEnvironment() != null) {
ApogyCoreInvocatorFacade.INSTANCE.getActiveInvocatorSession().getEnvironment().getVariablesList();
}
this.apogySystemPoseComposite = new ApogySystemPoseComparativeComposite(parent, style, variables,
this.variable1FeatureReference, this.variable2FeatureReference, this.trip1Distance, this.trip2Distance);
}
@Override
public void userPostConstruct(MPart mPart) {
try {
String distance1String = mPart.getPersistedState()
.get(ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_COMPARATIVE__DISTANCE_1);
if (distance1String != null)
this.trip1Distance = Double.parseDouble(distance1String);
String distance2String = mPart.getPersistedState()
.get(ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_COMPARATIVE__DISTANCE_2);
if (distance2String != null)
this.trip2Distance = Double.parseDouble(distance2String);
VariableFeatureReference vfr1 = (VariableFeatureReference) ApogyCoreInvocatorUIFacade.INSTANCE
.readFromPersistedState(mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_1);
if (vfr1 != null)
this.variable1FeatureReference = vfr1;
VariableFeatureReference vfr2 = (VariableFeatureReference) ApogyCoreInvocatorUIFacade.INSTANCE
.readFromPersistedState(mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_2);
if (vfr2 != null)
this.variable2FeatureReference = vfr2;
} catch (Throwable t) {
Logger.error(t.getMessage(), t);
}
}
@Override
public void userPersistState(MPart mPart) {
if (this.apogySystemPoseComposite != null) {
mPart.getPersistedState().put(
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_COMPARATIVE__DISTANCE_1,
Double.toString(this.apogySystemPoseComposite.getTripDistance1()));
mPart.getPersistedState().put(
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_COMPARATIVE__DISTANCE_2,
Double.toString(this.apogySystemPoseComposite.getTripDistance2()));
ApogyCoreInvocatorUIFacade.INSTANCE.saveToPersistedState(mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_1,
this.variable1FeatureReference);
ApogyCoreInvocatorUIFacade.INSTANCE.saveToPersistedState(mPart,
ApogyCoreUIRCPConstants.PERSISTED_STATE__VARIABLE_POSE_VARIABLE_FEATURE__REFERENCE_2,
this.variable2FeatureReference);
}
}
}