Revision 38194 branches/v2_0_0_prep/extensions/org.gvsig.annotation.app/org.gvsig.annotation.app.extension/src/main/java/org/gvsig/annotation/app/extension/AnnotationExtension.java

View differences:

AnnotationExtension.java
33 33
import org.gvsig.annotation.swing.AnnotationSwingManager;
34 34
import org.gvsig.annotation.swing.AnnotationWindowManager;
35 35
import org.gvsig.annotation.swing.JAnnotationCreationServicePanel;
36
import org.gvsig.app.ApplicationLocator;
37
import org.gvsig.app.ApplicationManager;
36 38
import org.gvsig.app.project.documents.view.ViewDocument;
37
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
38
import org.gvsig.editing.EditionUtilities;
39
import org.gvsig.app.project.documents.view.ViewManager;
39 40
import org.gvsig.fmap.dal.feature.FeatureStore;
40 41
import org.gvsig.fmap.mapcontext.MapContext;
41 42
import org.gvsig.fmap.mapcontext.layers.FLayer;
......
86 87
	
87 88
	}
88 89

  
89
	public void execute(String actionCommand) {
90
		org.gvsig.andami.ui.mdiManager.IWindow window = PluginServices.getMDIManager().getActiveWindow();
90
	private FLyrVect getCurrentLayer() {
91
		return this.getCurrentLayer(null); 
92
	}
93
	
94
	private FLyrVect getCurrentLayer(MapContext mapContext) {
95
		FLyrVect layer = null; 
96
		
97
		if( mapContext == null ) {
98
			ApplicationManager application = ApplicationLocator.getManager();
91 99

  
92
		if (window instanceof DefaultViewPanel) {
93
			DefaultViewPanel viewPanel = (DefaultViewPanel) window;
94
			ViewDocument viewDocument = viewPanel.getModel();
95
			MapContext mapContext = viewDocument.getMapContext();		
96
			FLayer[] actives = mapContext.getLayers().getActives();
100
			ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
101
			if( view == null ) {
102
				return null;
103
			}
104
			mapContext = view.getMapContext();
105
		}
106
		FLayer[] actives = mapContext.getLayers().getActives();
97 107

  
98
			FLyrVect fLyrVect = null;
99
			for (int i=0 ; i<actives.length ; i++){
100
				if (actives[i] instanceof FLyrVect){
101
					fLyrVect = (FLyrVect)actives[i];
102
					break;
103
				}
108
		for (int i=0 ; i<actives.length ; i++){
109
			if (actives[i] instanceof FLyrVect){
110
				layer = (FLyrVect)actives[i];
111
				break;
104 112
			}
113
		}
114
		return layer;
115
	}
116
	
117
	public void execute(String actionCommand) {
118
		ApplicationManager application = ApplicationLocator.getManager();
105 119

  
106
			if (fLyrVect == null){
107
				return;
108
			}		
109

  
110
			showAnnotation(manager, (FeatureStore)fLyrVect.getDataStore(), viewPanel);
120
		ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
121
		if( view == null ) {
122
			return;
111 123
		}
124
		MapContext mapContext = view.getMapContext();
125
		FLyrVect layer = getCurrentLayer(mapContext);
126
		if (layer == null){
127
			return;
128
		}		
129
		showAnnotation(manager, layer.getFeatureStore(), mapContext);
112 130
	}
113 131

  
114
	public void showAnnotation(AnnotationManager manager, FeatureStore featureStore, DefaultViewPanel defaultViewPanel) {
132
	public void showAnnotation(AnnotationManager manager, FeatureStore featureStore, MapContext mapContext) {
115 133
		try {
116 134
			AnnotationCreationService service =
117 135
				(AnnotationCreationService) manager.getAnnotationCreationService(featureStore);
118
			service.setAnnotationCreationFinishAction(new AddLayerFinishAction(defaultViewPanel));
136
			service.setAnnotationCreationFinishAction(new AddLayerFinishAction(mapContext));
119 137

  
120 138
			JAnnotationCreationServicePanel panel =
121 139
				swingManager.createAnnotation(service);
......
128 146
	}
129 147

  
130 148
	public boolean isEnabled() {
131
		int status = EditionUtilities.getEditionStatus();
132
		if (( status == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE || status == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
133
				|| (status == EditionUtilities.EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE)|| (status == EditionUtilities.EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE))
134
		{
135
			return true;
149
		FLayer layer = getCurrentLayer();
150
		if( layer == null ) {
151
			return false;
136 152
		}
137
		return false;
153
		return true;
138 154
	}
139 155

  
140 156
	public boolean isVisible() {
141
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
142
		.getActiveWindow();
157
		ApplicationManager application = ApplicationLocator.getManager();
143 158

  
144
		if (f == null) {
159
		ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
160
		if( view == null ) {
145 161
			return false;
146 162
		}
147

  
148
		if (f instanceof DefaultViewPanel) {
149
			return true;
150
		}
151
		return false;
163
		return true;
152 164
	}
153 165
}

Also available in: Unified diff