/** * Añadir un nuevo Params a la lista de Params que podemos manejar. Un Params equivale a un filtro * cargado. El hecho de trabajar con Params y no con filtros, simplifica totalmente el panel. Sin * tener que depender de los filtros nada más que para el momento de dibujado o guardado. * * @param name * @param params * @param classFilter */ public void addNewParam(String name, Params params, Class classFilter) { ParamStruct param = new ParamStruct(); param.setFilterName(name); param.setFilterParam(params); param.setFilterClass(classFilter); paramsList.add(param); }
/** * A partir de una lista de filtros devuelve un array con sus parámetros * * @param filterList * @return ArrayList */ public ArrayList getParams(RasterFilterList filterList) { ArrayList listFilterUsed = new ArrayList(); for (int i = 0; i < filterList.lenght(); i++) { try { RasterFilter filter = (RasterFilter) filterList.get(i); Params params = (Params) filter.getUIParams(filter.getName()).clone(); ParamStruct newParam = new ParamStruct(); Class c = null; if (filter instanceof LinearStretchEnhancementFilter) c = LinearStretchEnhancementFilter.class; newParam.setFilterClass(c); newParam.setFilterName(filter.getName()); newParam.setFilterParam(params); listFilterUsed.add(newParam); } catch (CloneNotSupportedException e) { } } return listFilterUsed; }
/** * Aqui se seleccionan que filtros se van a aplicar y se devuelven en forma de ArrayList tanto * para el dibujado como cuando aceptan o aplican el panel. * * @param rendering * @return */ public ArrayList applyFilters(IRasterRendering rendering) { ArrayList listFilterUsed = new ArrayList(); RasterFilterList filterList = new RasterFilterList(); filterList.setEnv(rendering.getRenderFilterList().getEnv()); RasterFilterListManager stackManager = new RasterFilterListManager(filterList); // Conservamos filtros no visibles ya existentes ArrayList filtersInit = getFilterPanel().getLayerVisualStatus().getLast().getFilterStatus(); for (int i = 0; i < filtersInit.size(); i++) { // Si es visible no hacemos nada if (((RasterFilter) filtersInit.get(i)).isVisible()) continue; RasterFilter obj = null; for (int j = 0; j < stackManager.getRasterFilterList().size(); j++) { Class classFilter = (Class) stackManager.getRasterFilterList().get(j); try { obj = (RasterFilter) classFilter.newInstance(); if (obj.getName().equals(((RasterFilter) filtersInit.get(i)).getName())) break; } catch (InstantiationException e) { RasterToolsUtil.messageBoxError("error_creando_filtro", this, e); } catch (IllegalAccessException e) { RasterToolsUtil.messageBoxError("error_creando_filtro", this, e); } } // Si no encontramos el filtro apropiado, nos olvidamos de el if (obj == null) continue; // Si no es visible tenemos que conservar el filtro try { Params params = (Params) ((RasterFilter) filtersInit.get(i)) .getUIParams(((RasterFilter) filtersInit.get(i)).getName()) .clone(); // Añado el parametro RenderBands a los parametros del filtro String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2]; params.setParam("RenderBands", rgb, 0, null); params.setParam("alphaBand", new Integer(rendering.getAlphaBandNumber()), 0, null); ParamStruct newParam = new ParamStruct(); newParam.setFilterClass(obj.getClass()); newParam.setFilterName(((RasterFilter) filtersInit.get(i)).getName()); newParam.setFilterParam(params); listFilterUsed.add(newParam); } catch (CloneNotSupportedException e) { } } // Metemos los filtros seleccionados en el panel ListModel list = getFilterPanel().getMainPanel().getTreeListContainer().getListModel(); for (int i = 0; i < list.getSize(); i++) { Hashtable hastTable = getFilterPanel().getMainPanel().getTreeListContainer().getMap(); for (int j = 0; j < paramsList.size(); j++) { boolean active = true; Param param = ((ParamStruct) paramsList.get(j)).getFilterParam().getParamById("enabled"); if ((param != null) && param.defaultValue instanceof Boolean && ((((Boolean) param.defaultValue).booleanValue()) == false)) active = false; if (active) { if (((ParamStruct) paramsList.get(j)) .getFilterName() .equals(hastTable.get(list.getElementAt(i)))) { try { Params params = (Params) ((ParamStruct) paramsList.get(j)).getFilterParam().clone(); // Añado el parametro RenderBands a los parametros // del filtro String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2]; params.setParam("RenderBands", rgb, 0, null); params.setParam("alphaBand", new Integer(rendering.getAlphaBandNumber()), 0, null); ParamStruct newParam = new ParamStruct(); newParam.setFilterClass(((ParamStruct) paramsList.get(j)).getFilterClass()); newParam.setFilterName(((ParamStruct) paramsList.get(j)).getFilterName()); newParam.setFilterParam(params); listFilterUsed.add(newParam); } catch (CloneNotSupportedException e) { } } } } } return listFilterUsed; }