Index: src/main/java/org/gvsig/app/project/documents/view/toc/gui/TOC.java =================================================================== --- projects/externals/gvSIG/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/gui/TOC.java (revision 42550) +++ projects/externals/gvSIG/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/gui/TOC.java (working copy) @@ -843,7 +843,11 @@ lyr.getMapContext().beginAtomicEvent(); if (((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) - && (e.getButton() == MouseEvent.BUTTON1)) { + && ( + e.getButton() == MouseEvent.BUTTON1 || + e.getButton() == MouseEvent.BUTTON3 + ) + ) { FLayer[] activeLayers = layers.getActives(); if (activeLayers.length > 0) { selectInterval(layers, lyr); @@ -853,10 +857,15 @@ } else { if (!((e.getModifiers() & InputEvent.CTRL_MASK) != 0) - && (e.getButton() == MouseEvent.BUTTON1)) { + && ( + e.getButton() == MouseEvent.BUTTON1 || + e.getButton() == MouseEvent.BUTTON3 + ) + ) { layers.setAllActives(false); } - if (e.getButton() == MouseEvent.BUTTON1) { + if (e.getButton() == MouseEvent.BUTTON1 + ||e.getButton() == MouseEvent.BUTTON3) { // lyr.setActive(true); updateActive(lyr, !lyr.isActive()); } @@ -884,6 +893,12 @@ if (e.getButton() == MouseEvent.BUTTON3) { // Boton derecho sobre un nodo del arbol // if ((e.getModifiers() & InputEvent.META_MASK) != 0) { + //***** Change selection +// if(!lyr.isActive()){ +// layers.setAllActives(false); +// updateActive(lyr, true); +// } + //***** popmenu = new FPopupMenu(mapContext, node); tree.add(popmenu); @@ -896,6 +911,41 @@ } if (node != null && node.getUserObject() instanceof TocItemLeaf) { + TocItemBranch owner = + (TocItemBranch) ((DefaultMutableTreeNode) node + .getParent()).getUserObject(); + + FLayer masterLayer = owner.getLayer(); + + if (((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) + && ( + e.getButton() == MouseEvent.BUTTON1 || + e.getButton() == MouseEvent.BUTTON3 + ) + ) { + FLayer[] activeLayers = layers.getActives(); + if (activeLayers.length > 0) { + selectInterval(layers, masterLayer); + } else { + updateActive(masterLayer, !masterLayer.isActive()); + } + + } else { + if (!((e.getModifiers() & InputEvent.CTRL_MASK) != 0) + && ( + e.getButton() == MouseEvent.BUTTON1 || + e.getButton() == MouseEvent.BUTTON3 + ) + ) { + layers.setAllActives(false); + } + if (e.getButton() == MouseEvent.BUTTON1 + ||e.getButton() == MouseEvent.BUTTON3) { + // lyr.setActive(true); + updateActive(masterLayer, !masterLayer.isActive()); + } + } + // double click with left button ON A LEAF (ISymbol) if (e.getClickCount() >= 2 && e.getButton() == MouseEvent.BUTTON1) { @@ -914,45 +964,45 @@ * it and FOR ALL OTHER COMPATIBLES THAT HAVE * BEEN ACTIVATED. */ + /* + * #3035: Symbology is applied to active layers too + * Now it will be done only on the double-clicked one + */ ArrayList targetLayers = new ArrayList(); - TocItemBranch owner = - (TocItemBranch) ((DefaultMutableTreeNode) node - .getParent()).getUserObject(); - FLayer masterLayer = owner.getLayer(); targetLayers.add(masterLayer); - FLayer[] actives = - mapContext.getLayers().getActives(); - for (int i = 0; i < actives.length; i++) { - if (actives[i].getClass().equals( - masterLayer.getClass())) { - if (actives[i] instanceof FLyrVect) { - FLyrVect vectorLayer = - (FLyrVect) actives[i]; - FLyrVect vectorMaster = - (FLyrVect) masterLayer; - int masterLayerShapetypeOF_THE_LEGEND = - ((IVectorLegend) vectorMaster - .getLegend()) - .getShapeType(); - int anotherVectorLayerShapetypeOF_THE_LEGEND = - ((IVectorLegend) vectorLayer - .getLegend()) - .getShapeType(); - if (masterLayerShapetypeOF_THE_LEGEND == anotherVectorLayerShapetypeOF_THE_LEGEND) { - targetLayers.add(vectorLayer); - } else { - vectorLayer.setActive(false); - } - } - // TODO for the rest of layer types - // (i.e. FLyrRaster) - } else { - actives[i].setActive(false); - } - } +// FLayer[] actives = +// mapContext.getLayers().getActives(); +// for (int i = 0; i < actives.length; i++) { +// if (actives[i].getClass().equals( +// masterLayer.getClass())) { +// if (actives[i] instanceof FLyrVect) { +// FLyrVect vectorLayer = +// (FLyrVect) actives[i]; +// FLyrVect vectorMaster = +// (FLyrVect) masterLayer; +// int masterLayerShapetypeOF_THE_LEGEND = +// ((IVectorLegend) vectorMaster +// .getLegend()) +// .getShapeType(); +// int anotherVectorLayerShapetypeOF_THE_LEGEND = +// ((IVectorLegend) vectorLayer +// .getLegend()) +// .getShapeType(); +// if (masterLayerShapetypeOF_THE_LEGEND == anotherVectorLayerShapetypeOF_THE_LEGEND) { +// targetLayers.add(vectorLayer); +// } else { +// vectorLayer.setActive(false); +// } +// } +// // TODO for the rest of layer types +// // (i.e. FLyrRaster) +// } else { +// actives[i].setActive(false); +// } +// } action.execute(leaf, targetLayers.toArray(new FLayer[0])); } @@ -968,6 +1018,12 @@ // TocItemLeaf auxLeaf = (TocItemLeaf) node.getUserObject(); // FSymbol theSym = auxLeaf.getSymbol(); if ((e.getModifiers() & InputEvent.META_MASK) != 0) { + //***** Change selection + if (!masterLayer.isActive()){ + layers.setAllActives(false); + updateActive(masterLayer, true); + } + //***** popmenu = new FPopupMenu(mapContext, node); tree.add(popmenu); popmenu.show(e.getComponent(), e.getX(), e.getY());