Revision 8800 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/operations/OperationsPagePanelController.java

View differences:

OperationsPagePanelController.java
290 290
    }
291 291

  
292 292
    private void updatePreviewers() {
293
        updatePreviewer();
294
        updateMiddlePreviewer();
295
    }
296

  
297
    private void updatePreviewer() {
293 298
        if (this.initialized) {
294 299
            RasterLegend legendForPreview = this.clonedLayerForPreview.getLegend();
295
            RasterLegend legendForMiddlePreview = this.clonedLayerForMiddlePreview.getLegend();
296 300
            OperationList operationListForPreview = ((OperationManager) BufferLocator.getBufferManager()).createOperationList();
297 301
            operationListPanel.fetch(operationListForPreview);
298
            OperationList operationListForMiddlePreview =
299
                ((OperationManager) BufferLocator.getBufferManager()).createOperationList();
300
            operationListPanel.fetch(operationListForMiddlePreview);
301 302
            int selectedRow = operationListPanel.getSelectedRow();
302 303
            if (selectedRow >= 0 && selectedRow<operationListForPreview.size()) {
303 304
                OperationListEntry selectedEntryForPreview = operationListForPreview.get(selectedRow);
304
                OperationListEntry selectedEntryForMiddlePreview = operationListForPreview.get(selectedRow);
305 305
                DynObject parametersForPreview = selectedEntryForPreview.getParameters();
306
                DynObject parametersForMiddlePreview = selectedEntryForMiddlePreview.getParameters();
307 306
                if (form.hasValidValues()) {
308 307
                    form.getValues(parametersForPreview);
309
                    form.getValues(parametersForMiddlePreview);
310 308
                    // Update complete previewer but the selected entry is filled with form values
311 309
                    legendForPreview.setFilters(operationListForPreview);
310
                }
311
            } else if(selector.getSelected()!=null){
312
                updateLegendFromSelector(legendForPreview, operationListForPreview);
313
            } else {
314
                form = null;
315
                //update legend with complete operationList
316
                legendForPreview.setFilters(operationListForPreview);
317
            }
318
        }
312 319

  
320

  
321
    }
322

  
323
    private void updateMiddlePreviewer() {
324
        if (this.initialized) {
325
            RasterLegend legendForMiddlePreview = this.clonedLayerForMiddlePreview.getLegend();
326
            OperationList operationListForMiddlePreview =
327
                ((OperationManager) BufferLocator.getBufferManager()).createOperationList();
328
            operationListPanel.fetch(operationListForMiddlePreview);
329
            int selectedRow = operationListPanel.getSelectedRow();
330
            if (selectedRow >= 0 && selectedRow<operationListForMiddlePreview.size()) {
331
                OperationListEntry selectedEntryForMiddlePreview = operationListForMiddlePreview.get(selectedRow);
332
                DynObject parametersForMiddlePreview = selectedEntryForMiddlePreview.getParameters();
333
                if (form.hasValidValues()) {
334
                    form.getValues(parametersForMiddlePreview);
313 335
                    // Update middle previewer but the selected entry is filled with form values
314 336
                    while(operationListForMiddlePreview.size()>selectedRow+1){
315 337
                        operationListForMiddlePreview.remove(operationListForMiddlePreview.size()-1);
......
317 339
                    legendForMiddlePreview.setFilters(operationListForMiddlePreview);
318 340
                }
319 341
            } else if(selector.getSelected()!=null){
320
                OperationFactory factory = selector.getSelected();
321
                DynObject parameters = factory.createParameters();
322
                if (form.hasValidValues()) {
323
                    form.getValues(parameters);
324
                    OperationManager operationManager = BufferLocator.getOperationManager();
325
                    OperationListEntry entryForPreview = operationManager.createOperationListEntry(factory.create(), parameters);
326
                    OperationListEntry entryForMiddlePreview = null;
327
                    entryForPreview.setActive(true);
328
                    try {
329
                        entryForMiddlePreview = (OperationListEntry)entryForPreview.clone();
330
                    } catch (CloneNotSupportedException e) {
331
                        LOG.warn("Can't get the operation list.");
332
                    }
333
                    operationListForPreview.add(entryForPreview);
334
                    if(entryForMiddlePreview!=null){
335
                        operationListForMiddlePreview.add(entryForMiddlePreview);
336
                    }
337
                    //update both previewers with complete operationList but the last entry is filled with form values
338
                    legendForPreview.setFilters(operationListForPreview);
339
                    legendForMiddlePreview.setFilters(operationListForMiddlePreview);
340
                }
342
                updateLegendFromSelector(legendForMiddlePreview, operationListForMiddlePreview);
341 343
            } else {
342 344
                form = null;
343
                //update both previewers with complete operationList
344
                legendForPreview.setFilters(operationListForPreview);
345
                legendForMiddlePreview.setFilters(operationListForPreview);
345
                //update legend with complete operationList
346
                legendForMiddlePreview.setFilters(operationListForMiddlePreview);
346 347
            }
347
//            MapControl mapControl = (MapControl) previewer.asJComponent();
348
//            MapContext mapContext = mapControl.getMapContext();
349
//            mapContext.invalidate();
350
//            mapControl.paintImmediately(new Rectangle(mapControl.getSize()));
351
//
352
//            MapControl middleMapControl = (MapControl) middlePreviewer.asJComponent();
353
//            MapContext middleMapContext = middleMapControl.getMapContext();
354
//            middleMapContext.invalidate();
355
//            middleMapControl.paintImmediately(new Rectangle(middleMapControl.getSize()));
356 348
        }
357 349
    }
358 350

  
351
    /**
352
     * @param rasterLegend
353
     * @param operationList
354
     */
355
    private void updateLegendFromSelector(RasterLegend rasterLegend, OperationList operationList) {
356
        OperationFactory factory = selector.getSelected();
357
        DynObject parameters = factory.createParameters();
358
        if (form.hasValidValues()) {
359
            //update legend with complete operationList but the last entry is filled with form values
360
            form.getValues(parameters);
361
            OperationManager operationManager = BufferLocator.getOperationManager();
362
            OperationListEntry entryForPreview = operationManager.createOperationListEntry(factory.create(), parameters);
363
            entryForPreview.setActive(true);
364
            operationList.add(entryForPreview);
365
            rasterLegend.setFilters(operationList);
366
        }
367
    }
359 368

  
369

  
360 370
    private void translate() {
361 371
        I18nManager i18nManager = ToolsLocator.getI18nManager();
362 372
        previewer.asJComponent().setToolTipText(i18nManager.getTranslation(previewer.asJComponent().getToolTipText()));

Also available in: Unified diff