/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.core.distances.ui;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ItemEvent;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import com.opendoorlogistics.api.distances.DistancesOutputConfiguration;
import com.opendoorlogistics.api.distances.DistancesOutputConfiguration.OutputType;
import com.opendoorlogistics.api.ui.UIFactory.DoubleChangedListener;
import com.opendoorlogistics.core.utils.ui.DoubleEntryPanel;
import com.opendoorlogistics.core.utils.ui.EnumComboBox;
public class OutputCostTypeBox extends AbstractDistancesConfigBox{
private final EnumComboBox<OutputType> outputType;
private final JLabel outputTypeLabel;
private final DoubleEntryPanel combinedDistanceWeight;
private final DoubleEntryPanel combinedTimeWeight;
private final DistancesOutputConfiguration config;
public OutputCostTypeBox(Window owner,final DistancesOutputConfiguration config, long flags){
//super(owner, "Graphhopper configuration", true);
super(owner,"Output cost type", flags);
this.config = config;
outputType = new EnumComboBox<OutputType>(OutputType.values(), config.getOutputType()){
@Override
public void itemStateChanged(ItemEvent e) {
config.setOutputType((OutputType)getSelectedItem());
updateAppearance();
}
};
outputType.setPreferredSize(new Dimension(120,26));
outputTypeLabel = new JLabel("Travel cost type ");
panel.addLine(outputTypeLabel, outputType);
panel.addHalfWhitespace();
// multipliers if using combined
combinedDistanceWeight = new DoubleEntryPanel("Distance weight ", config.getDistanceWeighting(), null, new DoubleChangedListener() {
@Override
public void doubleChange(double newDbl) {
config.setDistanceWeighting(newDbl);
}
});
panel.add(combinedDistanceWeight);
panel.addHalfWhitespace();
combinedTimeWeight = new DoubleEntryPanel("Time weight ", config.getTimeWeighting(), null, new DoubleChangedListener() {
@Override
public void doubleChange(double newDbl) {
config.setTimeWeighting(newDbl);
}
});
panel.add(combinedTimeWeight);
panel.addHalfWhitespace();
updateAppearance();
pack();
}
public static void main(String []args){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
OutputCostTypeBox box = new OutputCostTypeBox(null, new DistancesOutputConfiguration(),0xFFFFFFFF);
box.setVisible(true);
}
});
}
private void updateAppearance(){
OutputType outType = config.getOutputType();
// outputType.setEnabled(hasFlag(UIFactory.COMPONENT_USES_TRAVEL_COST));
// outputTypeLabel.setEnabled(hasFlag(UIFactory.COMPONENT_USES_TRAVEL_COST));
//
combinedDistanceWeight.setEnabled(outType == OutputType.SUMMED );
combinedTimeWeight.setEnabled(outType == OutputType.SUMMED);
}
}