Author: echatellier Date: 2012-08-09 10:34:07 +0200 (Thu, 09 Aug 2012) New Revision: 429 Url: http://nuiton.org/repositories/revision/nuiton-matrix/429 Log: fixes : #2243 Add option to initialize selected values in dimension and default displayed graph Modified: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixDimensionPanel.java trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixViewerPanel.java Modified: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixDimensionPanel.java =================================================================== --- trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixDimensionPanel.java 2012-08-07 14:24:28 UTC (rev 428) +++ trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixDimensionPanel.java 2012-08-09 08:34:07 UTC (rev 429) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2010 - 2011 Codelutin, Chatellier Eric + * Copyright (C) 2010 - 2012 Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -34,8 +34,10 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; +import javax.swing.AbstractButton; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; import javax.swing.DefaultListModel; @@ -46,6 +48,7 @@ import javax.swing.JToggleButton; import javax.swing.JToggleButton.ToggleButtonModel; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.MatrixND; @@ -78,7 +81,7 @@ setLayout(new GridLayout(0, 1)); subPanelList = new ArrayList<MatrixDimensionPanel.SubDimensionPanel>(); matrixDimentionActions = new ArrayList<MatrixDimensionAction>(); - + // default sum all action matrixDimentionActions.add(new SumAllAction()); } @@ -209,9 +212,20 @@ } // semantic list + //MatrixDimensionFilter filter = matrixDimensionFilters.get(index); semList = new JList(); - SemanticListModel semModel = new SemanticListModel(semantic); + List<?> dimSemantic = semantic; + /*if (filter != null) { + dimSemantic = filter.filterSemantic(dimSemantic); + }*/ + SemanticListModel semModel = new SemanticListModel(dimSemantic); semList.setModel(semModel); + /*if (filter != null) { + ListCellRenderer renderer = filter.getListCellRenderer(); + if (renderer != null) { + semList.setCellRenderer(renderer); + } + }*/ add(new JScrollPane(semList), new GridBagConstraints(0, 1, 1 + nbActionAdded, 1, 1, 1, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 5, 0), 0, 0)); } @@ -372,4 +386,43 @@ return result; } + + /** + * Autoselect some dimensions values and some dimensions + * action. And perform rendering. + * + * @param dimSelectedValues selected values in each dimensions + * @param selectedActions selected actions in each dimensions + */ + public void initRenderering(List[] dimSelectedValues, + int[] selectedActions) { + + // values selection + for (int dimIndex = 0; dimIndex < dimSelectedValues.length; dimIndex++) { + List selectedValues = dimSelectedValues[dimIndex]; + if (selectedValues != null) { + SubDimensionPanel panel = subPanelList.get(dimIndex); + panel.semList.clearSelection(); + for (Object value : selectedValues) { + int index = panel.semantic.indexOf(value); + panel.semList.addSelectionInterval(index, index); + } + } + } + + // action selection + for (int dimIndex = 0; dimIndex < selectedActions.length; dimIndex++) { + int actionIndices = selectedActions[dimIndex]; + SubDimensionPanel panel = subPanelList.get(dimIndex); + int buttonIndex = 0; + Enumeration<AbstractButton> buttons = panel.buttonGroup.getElements(); + while (buttons.hasMoreElements()) { + AbstractButton button = buttons.nextElement(); + if (actionIndices == buttonIndex) { + button.setSelected(true); + } + buttonIndex++; + } + } + } } Modified: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixViewerPanel.java =================================================================== --- trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixViewerPanel.java 2012-08-07 14:24:28 UTC (rev 428) +++ trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/MatrixViewerPanel.java 2012-08-09 08:34:07 UTC (rev 429) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2010 - 2011 Codelutin, Chatellier Eric + * Copyright (C) 2010 - 2012 Codelutin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -300,27 +300,29 @@ String actionCommand = e.getActionCommand(); if ("render".equals(actionCommand)) { - // get matrix to display filtered - MatrixND matrix = dimensionPanel.getModifiedMatrix(matrixFilters); + performRendering(); + } else { + // clic on render button + updateSelectedRenderingComponent(); + } + } - // matrice superieur a 2 dimensions non geree!! - if (matrix.getDimCount() > 2) { - JOptionPane.showMessageDialog(this, _("nuitonmatrix.viewer.matrix.more.2d"), - _("nuitonmatrix.error"), JOptionPane.ERROR_MESSAGE); + protected void performRendering() { + // get matrix to display filtered + MatrixND matrix = dimensionPanel.getModifiedMatrix(matrixFilters); + + // matrice superieur a 2 dimensions non geree!! + if (matrix.getDimCount() > 2) { + JOptionPane.showMessageDialog(this, _("nuitonmatrix.viewer.matrix.more.2d"), + _("nuitonmatrix.error"), JOptionPane.ERROR_MESSAGE); + } else { + // get all display component for each renderer + componentForRenderers.clear(); + for (MatrixRenderer matrixRenderer : matrixRenderers.keySet()) { + Component component = matrixRenderer.getComponent(matrix); + componentForRenderers.put(matrixRenderer, component); } - else { - // get all display component for each renderer - componentForRenderers.clear(); - for (MatrixRenderer matrixRenderer : matrixRenderers.keySet()) { - Component component = matrixRenderer.getComponent(matrix); - componentForRenderers.put(matrixRenderer, component); - } - - updateSelectedRenderingComponent(); - } - } - else { - // clic on render button + updateSelectedRenderingComponent(); } } @@ -475,8 +477,7 @@ renderingComponentContainer.add(component, BorderLayout.CENTER); } } - } - else { + } else { // if enables default rendering if (matrixRenderers.get(matrixRenderer)) { Component component = matrixRenderer.getComponent(null); @@ -489,4 +490,20 @@ renderingComponentContainer.validate(); renderingComponentContainer.repaint(); } + + /** + * Init renderering by autoselecting some dimensions values and some dimensions + * action. And perform rendering. + * + * @param dimSelectedValues selected values in each dimensions + * @param selectedActions selected action in each dimensions + * @throws IllegalArgumentException if matrix has not been set + */ + public void initRenderering(List[] dimSelectedValues, int[] selectedActions) { + if (this.matrix == null) { + throw new IllegalArgumentException("Must set matrix first"); + } + dimensionPanel.initRenderering(dimSelectedValues, selectedActions); + iconPanel.performRendering(); + } }