Revision 10376 trunk/extensions/extExpressionField/src/com/iver/cit/gvsig/ExpresionFieldExtension.java

View differences:

ExpresionFieldExtension.java
1 1
package com.iver.cit.gvsig;
2 2

  
3
import java.util.ArrayList;
3 4
import java.util.BitSet;
5
import java.util.Iterator;
4 6

  
5 7
import org.apache.bsf.BSFManager;
6 8

  
7 9
import com.iver.andami.PluginServices;
8 10
import com.iver.andami.plugins.Extension;
9 11
import com.iver.cit.gvsig.gui.FieldExpresionPage;
12
import com.iver.cit.gvsig.project.documents.table.IOperator;
10 13
import com.iver.cit.gvsig.project.documents.table.gui.EvalExpresionDialog;
11 14
import com.iver.cit.gvsig.project.documents.table.gui.Table;
12 15
import com.iver.cit.gvsig.project.documents.table.operators.Abs;
......
57 60
import com.iver.cit.gvsig.project.documents.table.operators.ToString;
58 61
import com.iver.cit.gvsig.project.documents.table.operators.ToUpperCase;
59 62
import com.iver.cit.gvsig.project.documents.table.operators.Trim;
63
import com.iver.utiles.extensionPoints.ExtensionPoint;
60 64
import com.iver.utiles.extensionPoints.ExtensionPoints;
61 65
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
66
import com.iver.utiles.swing.threads.AbstractMonitorableTask;
62 67
/**
63 68
 * @author Vicente Caballero Navarro
64 69
 */
......
67 72
	public static final String BEANSHELL="beanshell";
68 73
	private static BSFManager interpreter=new BSFManager();
69 74
	private Table table=null;
75
	private static ArrayList operators=new ArrayList();
70 76
	public void initialize() {
71 77
		ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
72 78
    	extensionPoints.add("cad_editing_properties_pages","fieldExpresion",FieldExpresionPage.class);
......
76 82
	public void execute(String actionCommand) {
77 83
		com.iver.andami.ui.mdiManager.IWindow window = PluginServices.getMDIManager().getActiveWindow();
78 84
		table=(Table)window;
79
		EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter);
80
		PluginServices.getMDIManager().addWindow(eed);
85
		if (operators.isEmpty()) {
86
        	PluginServices.cancelableBackgroundExecution(new EvalOperatorsTask());
87
        }else{
88
        	 EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter,operators);
89
		     PluginServices.getMDIManager().addWindow(eed);
90
        }
91

  
81 92
	}
82 93
	public void postInitialize() {
83 94
	}
......
152 163
	    	extensionPoints.add("ColumnOperators",ToUpperCase.class.toString(),ToUpperCase.class);
153 164
	    	extensionPoints.add("ColumnOperators",Trim.class.toString(),Trim.class);
154 165
	 }
166
	 private class EvalOperatorsTask extends AbstractMonitorableTask{
167
	    	private ExtensionPoint extensionPoint;
168
	    	public EvalOperatorsTask(){
169
				setInitialStep(0);
170
				setDeterminatedProcess(true);
171
				setStatusMessage(PluginServices.getText(this, "charging_operators"));
172
				ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
173
				extensionPoint =(ExtensionPoint)extensionPoints.get("ColumnOperators");
174
				setFinalStep(extensionPoint.size()+1);
175
	    	}
176
			public void run() throws Exception {
177
				 long t1=System.currentTimeMillis();
178
			        Iterator iterator = extensionPoint.keySet().iterator();
179
			        while (iterator.hasNext()) {
180
			            try {
181
			                IOperator operator = (IOperator)extensionPoint.create((String)iterator.next());
155 182

  
183
			                operator.eval(interpreter);
184
			                operators.add(operator);
185
			                reportStep();
186
			            } catch (InstantiationException e) {
187
			                e.printStackTrace();
188
			            } catch (IllegalAccessException e) {
189
			                e.printStackTrace();
190
			            } catch (ClassCastException e) {
191
			                e.printStackTrace();
192
			            }
193
			        }
194
			        long t2=System.currentTimeMillis();
195
			        System.out.println("Tiempo en evaluar y crear del extension point = "+(t2-t1) );
196
			        long t3=System.currentTimeMillis();
197
			        System.out.println("Tiempo en a?adir los operadores correctos = "+(t3-t2) );
198
			        EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter,operators);
199
			        reportStep();
200
			        PluginServices.getMDIManager().addWindow(eed);
201
			}
202

  
203
	    }
204

  
156 205
}

Also available in: Unified diff