Revision 8762

View differences:

trunk/extensions/extGraph_predes/config/text.properties
1 1
Aplicar_tolerancia_de_snap=Usar tolerancia para crear la topolog\u00EDa de red
2 2
Aplicar_un_CLEAN_sobre_la_capa_original=Corregir topol\u00F3gicamente la capa original
3 3
Calcular_la_red_sobre_la_capa_original=Calcular la red sobre la capa original
4
center_on_flag=Centrar sobre parada
4 5
Clean_de_lineas=Correcci\u00F3n autom\u00E1tica de errores topol\u00F3gicos
5 6
Clear=Borrar
6 7
Clear_Barriers=Quitar todas las barreras
......
28 29
Load_Red=Cargar fichero de topolog\u00EDa de red previamente calculado
29 30
Manage_Flags=Gesti\u00F3n de paradas
30 31
Network=Red
32
no_se_puede_pasar_por_todas_las_paradas=No se puede pasar por todas las paradas
31 33
Procesando_linea=Procesando l\u00EDnea...
32 34
Ruta_borrada_o_inexistente=Ruta borrada o inexistente
33 35
Ruta_no_encontrada=Ruta no encontrada
......
123 125
shortestpath=Camino m\u00EDnimo
124 126
simple_fill=Relleno sencillo
125 127
size=tama\u00F1o
128
solucion_no_valida=Soluci?n no valida
126 129
stage=parada
127 130
symbol_library=
128 131
symbol_property_editor=Editor de propiedades del s\u00EDmbolo
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/graph/ShortestPathExtension.java
63 63
import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
64 64
import com.iver.cit.gvsig.fmap.rendering.FGraphic;
65 65
import com.iver.cit.gvsig.graph.core.GvFlag;
66
import com.iver.cit.gvsig.graph.core.IFlagListener;
66 67
import com.iver.cit.gvsig.graph.core.Network;
68
import com.iver.cit.gvsig.graph.gui.RouteControlPanel;
67 69
import com.iver.cit.gvsig.graph.gui.RouteReportPanel;
68 70
import com.iver.cit.gvsig.graph.solvers.Route;
69 71
import com.iver.cit.gvsig.graph.solvers.ShortestPathSolverAStar;
......
119 121
						GvSession.getInstance().put(mapCtrl, "RouteReport", reportsPanels);
120 122
					}	
121 123
					reportsPanels.add(routeReport);
124
					RouteControlPanel controlPanel = (RouteControlPanel) GvSession.getInstance().get(mapCtrl, "RouteControlPanel");
125
					if (controlPanel != null)
126
						controlPanel.refresh();
122 127
					
123 128
				} catch (GraphException e) {
124 129
					// TODO Auto-generated catch block
......
142 147
			idSymbolLine = graphicLayer.addSymbol(arrowSymbol);
143 148
			
144 149
		}
150
		// Para evitar hacer reallocate de los elementos de la
151
		// graphicList cada vez, creamos primero la lista
152
		// y la insertamos toda de una vez.
153
		ArrayList graphicsRoute = new ArrayList();
145 154
		while (it.hasNext()) {
146 155
			IFeature feat = (IFeature) it.next();
147 156
			IGeometry gAux = feat.getGeometry();
148 157
			FGraphic graphic = new FGraphic(gAux, idSymbolLine);
149 158
			graphic.setTag("ROUTE");
150
			// Lo insertamos al principio de la lista para que los
151
			// pushpins se dibujen despu?s.
152
//			graphicLayer.addGraphic(graphic);
153
			graphicLayer.insertGraphic(0, graphic);
159
			graphicsRoute.add(graphic);
160
//			graphicLayer.insertGraphic(0, graphic);
154 161
		}
162
		// Lo insertamos al principio de la lista para que los
163
		// pushpins se dibujen despu?s.
164

  
165
		graphicLayer.inserGraphics(0, graphicsRoute);
155 166
		mapControl.drawGraphics();
156 167

  
157 168
	}
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/graph/gui/RouteControlPanel.java
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

  

Also available in: Unified diff