43 |
43 |
*
|
44 |
44 |
* $Id$
|
45 |
45 |
* $Log$
|
46 |
|
* Revision 1.24 2006-11-14 16:12:01 fjp
|
|
46 |
* Revision 1.25 2006-11-14 18:32:32 fjp
|
47 |
47 |
* *** empty log message ***
|
48 |
48 |
*
|
|
49 |
* Revision 1.24 2006/11/14 16:12:01 fjp
|
|
50 |
* *** empty log message ***
|
|
51 |
*
|
49 |
52 |
* Revision 1.23 2006/11/14 09:23:30 fjp
|
50 |
53 |
* cargar paradas desde cualquier tema de puntos
|
51 |
54 |
*
|
... | ... | |
132 |
135 |
package com.iver.cit.gvsig.graph.gui;
|
133 |
136 |
|
134 |
137 |
import java.awt.BorderLayout;
|
135 |
|
import java.awt.Color;
|
136 |
138 |
import java.awt.Component;
|
137 |
139 |
import java.awt.Dimension;
|
138 |
140 |
import java.awt.FlowLayout;
|
... | ... | |
140 |
142 |
import java.awt.GridLayout;
|
141 |
143 |
import java.awt.event.ActionEvent;
|
142 |
144 |
import java.awt.event.ActionListener;
|
143 |
|
import java.awt.geom.Point2D;
|
144 |
145 |
import java.awt.geom.Rectangle2D;
|
|
146 |
import java.text.NumberFormat;
|
145 |
147 |
import java.util.ArrayList;
|
146 |
148 |
import java.util.List;
|
147 |
149 |
|
... | ... | |
152 |
154 |
import javax.swing.JPanel;
|
153 |
155 |
import javax.swing.JScrollPane;
|
154 |
156 |
import javax.swing.JTable;
|
|
157 |
import javax.swing.ListSelectionModel;
|
|
158 |
import javax.swing.event.ListSelectionEvent;
|
|
159 |
import javax.swing.event.ListSelectionListener;
|
|
160 |
import javax.swing.event.TableModelEvent;
|
|
161 |
import javax.swing.event.TableModelListener;
|
155 |
162 |
import javax.swing.table.AbstractTableModel;
|
156 |
163 |
import javax.swing.table.TableColumnModel;
|
157 |
164 |
import javax.swing.table.TableModel;
|
... | ... | |
161 |
168 |
import org.gvsig.gui.beans.swing.JBlank;
|
162 |
169 |
import org.gvsig.gui.beans.swing.JButton;
|
163 |
170 |
|
164 |
|
import com.hardcode.gdbms.engine.values.NumericValue;
|
165 |
|
import com.hardcode.gdbms.engine.values.StringValue;
|
166 |
171 |
import com.hardcode.gdbms.engine.values.Value;
|
167 |
172 |
import com.hardcode.gdbms.engine.values.ValueFactory;
|
168 |
173 |
import com.iver.andami.PluginServices;
|
169 |
|
import com.iver.andami.messages.NotificationListener;
|
170 |
174 |
import com.iver.andami.messages.NotificationManager;
|
171 |
175 |
import com.iver.andami.ui.mdiManager.IWindow;
|
172 |
176 |
import com.iver.andami.ui.mdiManager.SingletonWindow;
|
... | ... | |
180 |
184 |
import com.iver.cit.gvsig.fmap.core.FShape;
|
181 |
185 |
import com.iver.cit.gvsig.fmap.core.IGeometry;
|
182 |
186 |
import com.iver.cit.gvsig.fmap.core.ShapeFactory;
|
183 |
|
import com.iver.cit.gvsig.fmap.core.v02.FConstant;
|
184 |
|
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
|
185 |
187 |
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
|
186 |
188 |
import com.iver.cit.gvsig.fmap.edition.EditionException;
|
187 |
189 |
import com.iver.cit.gvsig.fmap.layers.FLayer;
|
188 |
190 |
import com.iver.cit.gvsig.fmap.layers.FLayers;
|
189 |
191 |
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
|
190 |
|
import com.iver.cit.gvsig.fmap.layers.GraphicLayer;
|
191 |
192 |
import com.iver.cit.gvsig.fmap.layers.LayerEvent;
|
192 |
193 |
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
|
193 |
194 |
import com.iver.cit.gvsig.fmap.layers.LayerListenerAdapter;
|
194 |
195 |
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
|
195 |
196 |
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
|
196 |
197 |
import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
|
197 |
|
import com.iver.cit.gvsig.fmap.rendering.FGraphic;
|
198 |
198 |
import com.iver.cit.gvsig.graph.GraphException;
|
199 |
199 |
import com.iver.cit.gvsig.graph.NetworkUtils;
|
200 |
200 |
import com.iver.cit.gvsig.graph.core.GvFlag;
|
... | ... | |
205 |
205 |
import com.iver.cit.gvsig.graph.solvers.RouteMemoryDriver;
|
206 |
206 |
import com.iver.cit.gvsig.graph.tools.FlagListener;
|
207 |
207 |
import com.iver.cit.gvsig.project.documents.gui.FOpenDialog;
|
208 |
|
import com.iver.cit.gvsig.project.documents.table.gui.Table.DataSourceDataModel;
|
209 |
208 |
import com.iver.cit.gvsig.project.documents.view.gui.IView;
|
210 |
209 |
import com.iver.cit.gvsig.project.documents.view.gui.View;
|
211 |
210 |
import com.iver.cit.gvsig.util.GvSession;
|
... | ... | |
541 |
540 |
GvFlag[] flags = getFlags();
|
542 |
541 |
double cost = 0;
|
543 |
542 |
for (int i = 0; i < flags.length; i++) {
|
|
543 |
if (!flags[i].isEnabled())
|
|
544 |
continue;
|
|
545 |
if (flags[i].getCost() >= Double.MAX_VALUE)
|
|
546 |
{
|
|
547 |
lblCost.setText(PluginServices.getText(this, "no_se_puede_pasar_por_todas_las_paradas"));
|
|
548 |
return;
|
|
549 |
}
|
|
550 |
if (flags[i].getCost() < 0)
|
|
551 |
{
|
|
552 |
lblCost.setText(PluginServices.getText(this, "solucion_no_valida"));
|
|
553 |
return;
|
|
554 |
}
|
|
555 |
|
544 |
556 |
cost += flags[i].getCost();
|
545 |
557 |
}
|
546 |
|
lblCost.setText(cost + getCostUnitName());
|
|
558 |
NumberFormat nf = NumberFormat.getInstance();
|
|
559 |
nf.setMaximumFractionDigits(2);
|
|
560 |
lblCost.setText(nf.format(cost) + getCostUnitName());
|
547 |
561 |
}
|
548 |
562 |
|
549 |
563 |
private String getCostUnitName() {
|
... | ... | |
587 |
601 |
.setPreferredWidth((int) (tablePreferredWidth * 0.7));
|
588 |
602 |
cm.getColumn(2)
|
589 |
603 |
.setPreferredWidth((int) (tablePreferredWidth * 0.3));
|
|
604 |
|
|
605 |
// Ask to be notified of selection changes.
|
|
606 |
ListSelectionModel rowSM = tblStages.getSelectionModel();
|
|
607 |
rowSM.addListSelectionListener(new ListSelectionListener() {
|
|
608 |
public void valueChanged(ListSelectionEvent e) {
|
|
609 |
//Ignore extra messages.
|
|
610 |
if (e.getValueIsAdjusting()) return;
|
|
611 |
|
|
612 |
ListSelectionModel lsm =
|
|
613 |
(ListSelectionModel)e.getSource();
|
|
614 |
getBtnCenterOnFlag().setEnabled(!lsm.isSelectionEmpty());
|
|
615 |
}
|
|
616 |
});
|
|
617 |
|
|
618 |
tblStages.getModel().addTableModelListener(new TableModelListener() {
|
|
619 |
|
|
620 |
public void tableChanged(TableModelEvent e) {
|
|
621 |
System.out.println("Table model changed");
|
|
622 |
|
|
623 |
}
|
|
624 |
|
|
625 |
});
|
|
626 |
|
|
627 |
|
590 |
628 |
}
|
591 |
629 |
return tblStages;
|
592 |
630 |
}
|
... | ... | |
636 |
674 |
btnCenterOnFlag = new JButton();
|
637 |
675 |
btnCenterOnFlag.setText(PluginServices.getText(this,
|
638 |
676 |
"center_on_flag"));
|
|
677 |
btnCenterOnFlag.setEnabled(false);
|
639 |
678 |
btnCenterOnFlag.addActionListener(this);
|
640 |
679 |
}
|
641 |
680 |
return btnCenterOnFlag;
|
... | ... | |
752 |
791 |
selected[i]--;
|
753 |
792 |
tblStages.addRowSelectionInterval(selected[i], selected[i]);
|
754 |
793 |
}
|
|
794 |
invalidateSolution();
|
755 |
795 |
} else if (c.equals(getBtnPullDownStage())) {
|
756 |
796 |
// pull down
|
757 |
797 |
int[] selected = tblStages.getSelectedRows();
|
... | ... | |
768 |
808 |
selected[i]++;
|
769 |
809 |
tblStages.addRowSelectionInterval(selected[i], selected[i]);
|
770 |
810 |
}
|
|
811 |
invalidateSolution();
|
771 |
812 |
|
772 |
813 |
} else if (c.equals(getBtnRemoveStage())) {
|
773 |
|
removeStage();
|
|
814 |
removeStage();
|
774 |
815 |
} else if (c.equals(getBtnSaveRoute())) {
|
775 |
816 |
saveRoute();
|
776 |
817 |
} else if (c.equals(getBtnCenterOnFlag())) {
|
... | ... | |
785 |
826 |
IView view = (IView) window;
|
786 |
827 |
ViewPort vp = view.getMapControl().getViewPort();
|
787 |
828 |
Rectangle2D extent = vp.getAdjustedExtent();
|
788 |
|
double xC = extent.getCenterX();
|
789 |
|
double yC = extent.getCenterY();
|
790 |
829 |
double xNC = flag.getOriginalPoint().getX();
|
791 |
830 |
double yNC = flag.getOriginalPoint().getY();
|
|
831 |
double width = extent.getWidth();
|
|
832 |
double height = extent.getHeight();
|
792 |
833 |
|
793 |
834 |
Rectangle2D.Double r = new Rectangle2D.Double();
|
794 |
835 |
|
795 |
|
r.x = extent.getX() - (xNC - xC);
|
796 |
|
r.y = extent.getY() - (yNC - yC);
|
797 |
|
r.width = extent.getWidth();
|
798 |
|
r.height = extent.getHeight();
|
|
836 |
r.width = width;
|
|
837 |
r.height = height;
|
|
838 |
r.x = xNC - width/2;
|
|
839 |
r.y = yNC - height/2;
|
799 |
840 |
|
800 |
841 |
vp.setExtent(r);
|
801 |
842 |
|
... | ... | |
805 |
846 |
repaint();
|
806 |
847 |
}
|
807 |
848 |
|
|
849 |
private void invalidateSolution() {
|
|
850 |
for (int i=0; i < _getFlags().size(); i++)
|
|
851 |
{
|
|
852 |
GvFlag flag = (GvFlag) _getFlags().get(i);
|
|
853 |
flag.setCost(-1.0);
|
|
854 |
}
|
|
855 |
updateTotalCost();
|
|
856 |
}
|
|
857 |
|
808 |
858 |
private void saveStage(){
|
809 |
859 |
if(network == null){
|
810 |
860 |
IWindow window = PluginServices.getMDIManager().getActiveWindow();
|
... | ... | |
1065 |
1115 |
|
1066 |
1116 |
}// for
|
1067 |
1117 |
tblStages.clearSelection();
|
|
1118 |
invalidateSolution();
|
1068 |
1119 |
mapCtrl.drawMap(false);
|
1069 |
1120 |
}
|
1070 |
1121 |
|