Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 89ef5bec by Tony Chemit at 2022-04-19T14:02:37+02:00 Mise en page des rapports - Closes #2265 - - - - - 6 changed files: - client/datasource/actions/src/main/i18n/getters/java.getter - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportUI.jaxx - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportUI.jcss - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ResultTableModel.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/CopyResultToClipboard.java - + client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ToggleConfigure.java Changes: ===================================== client/datasource/actions/src/main/i18n/getters/java.getter ===================================== @@ -16,7 +16,6 @@ observe.ui.action.close.synchro.tip observe.ui.action.config.export.required.write.data observe.ui.action.config.left.datasource.required.write.data observe.ui.action.continue -observe.ui.action.copy observe.ui.action.copy.to.clipBoard observe.ui.action.do.backup.tip observe.ui.action.goto.next.stage @@ -26,6 +25,7 @@ observe.ui.action.goto.previous.stage.tip observe.ui.action.info.storage.tip observe.ui.choice.cancel observe.ui.choice.replace +observe.ui.content.action.configure.tip observe.ui.datasource.actions.config.data.sources.equals observe.ui.datasource.editor.actions.activity.pairing observe.ui.datasource.editor.actions.consolidate ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportUI.jaxx ===================================== @@ -28,8 +28,9 @@ io.ultreia.java4all.jaxx.widgets.choice.BeanCheckBox + org.jdesktop.swingx.JXTable + org.jdesktop.swingx.JXTitledPanel java.awt.Dimension - javax.swing.DefaultComboBoxModel javax.swing.JComboBox </import> @@ -48,52 +49,45 @@ public void destroy() { } ]]> </script> - <JPanel id='PENDING_content' layout='{new BorderLayout()}'> - - <!-- le paneau du haut qui contient le sélecteur et les actions --> - <JPanel id='northPanel' constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'> - - <JPanel id='requestSelectorPane' constraints='BorderLayout.NORTH'> - - <JToolBar id='toolbar' constraints='BorderLayout.WEST'> - - <!-- suppression de la sélection du report --> - <JButton id="resetSelectedReport" onActionPerformed="getHandler().updateSelectedReport(null)"/> - - </JToolBar> - - <!-- selecteur de report --> - <JComboBox id='reportSelector' constraints='BorderLayout.CENTER' onItemStateChanged='getHandler().updateSelectedReportFromEvent(event)'/> - - <JScrollPane id='reportDescriptionPane' constraints='BorderLayout.SOUTH'> - <JTextArea id='reportDescription'/> - </JScrollPane> - - </JPanel> - - <!-- selecteur de variables --> - <JScrollPane id='reportVariableSelectorPane' constraints='BorderLayout.CENTER'> - <JPanel id='reportVariableSelectorPanel' layout="{new GridLayout(0,1)}"/> +<!-- <JPanel id='northPanel' constraints='BorderLayout.NORTH' layout='{new GridLayout(1, 2)}'>--> + <JXTitledPanel id="configurationPane" contentContainer="{configurationPanel}" constraints='BorderLayout.NORTH'> + <JPanel id="configurationPanel" layout='{new BorderLayout()}'> + <JPanel id='requestSelectorPane' constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'> + <JToolBar id='toolbar' constraints='BorderLayout.WEST'> + <JButton id="resetSelectedReport" onActionPerformed="getHandler().updateSelectedReport(null)"/> + </JToolBar> + <JComboBox id='reportSelector' constraints='BorderLayout.CENTER' onItemStateChanged='getHandler().updateSelectedReportFromEvent(event)'/> + </JPanel> + <JScrollPane id='reportVariableSelectorPane' constraints='BorderLayout.CENTER'> + <JPanel id='reportVariableSelectorPanel' layout="{new GridLayout(0,1)}"/> + </JScrollPane> + <JScrollPane id='reportDescriptionPane' constraints='BorderLayout.SOUTH'> + <JTextArea id='reportDescription'/> + </JScrollPane> + </JPanel> + </JXTitledPanel> +<!-- <JPanel id="copyPane" layout='{new BorderLayout()}'>--> +<!-- <JPanel id='copyOptions' constraints='BorderLayout.NORTH' beanScope="stepModel" layout="{new GridLayout(0,1)}">--> +<!-- <BeanCheckBox id='autoCopyToClipboard'/>--> +<!-- <BeanCheckBox id='copyRowHeaders'/>--> +<!-- <BeanCheckBox id='copyColumnHeaders'/>--> +<!-- </JPanel>--> +<!-- </JPanel>--> +<!-- </JPanel>--> + <JXTitledPanel id="resultPanel" constraints='BorderLayout.CENTER' contentContainer="{resultPane}" rightDecoration='{titleRightToolBar}'> + <JScrollPane id='resultPane'> + <JXTable id='resultTable'/> </JScrollPane> - </JPanel> - - <!-- le tableau des résultats --> - <JScrollPane id='resultPane' constraints='BorderLayout.CENTER'> - <JTable id='resultTable'/> - </JScrollPane> - - <JPanel id="copyPane" constraints='BorderLayout.SOUTH' layout='{new BorderLayout()}'> - <JPanel id='copyOptions' constraints='BorderLayout.NORTH' beanScope="stepModel" layout="{new GridLayout(0,1)}"> + <JPopupMenu id='configurePopup' beanScope="stepModel"> <BeanCheckBox id='autoCopyToClipboard'/> <BeanCheckBox id='copyRowHeaders'/> <BeanCheckBox id='copyColumnHeaders'/> - </JPanel> - <JButton id="copyResultToClipboard" constraints='BorderLayout.CENTER'/> - - </JPanel> - + </JPopupMenu> + <JToolBar id='titleRightToolBar'> + <JButton id="copyResultToClipboard"/> + <JToggleButton id='toggleConfigure'/> + </JToolBar> + </JXTitledPanel> </JPanel> - - </fr.ird.observe.client.datasource.actions.AdminTabUI> ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ReportUI.jcss ===================================== @@ -26,6 +26,10 @@ JToolBar { opaque:false; } +BeanCheckBox { + bean:{stepModel}; +} + #reportVariableSelectorPanel { border:{new TitledBorder(t("observe.ui.datasource.editor.actions.report.variables") + " ")}; } @@ -34,19 +38,23 @@ JToolBar { border:{new TitledBorder(t("observe.ui.datasource.editor.actions.report.copy.options") + " ")}; } +#resultPanel { + title:"observe.ui.datasource.editor.actions.report.result"; +} + #resultPane { - border:{new TitledBorder(t("observe.ui.datasource.editor.actions.report.result") + " ")}; verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; + horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED}; } #resultTable { model:{stepModel.getResultModel()}; + sortable:false; fillsViewportHeight:true; } -#requestSelectorPane { - border:{new TitledBorder(t("observe.ui.datasource.editor.actions.report.select") + " ")}; - layout:{new BorderLayout()}; +#configurationPane { + title:"observe.ui.datasource.editor.actions.report.select"; } #reportSelector { ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/ResultTableModel.java ===================================== @@ -25,6 +25,7 @@ import fr.ird.observe.dto.report.DataMatrix; import fr.ird.observe.dto.report.Report; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.jdesktop.swingx.JXTable; import javax.swing.JLabel; import javax.swing.JTable; @@ -56,14 +57,14 @@ public class ResultTableModel extends AbstractTableModel { private boolean withColumnHeader; private boolean withRowHeader; private JTableHeader tableHeader; - private JTable table; + private JXTable table; public ResultTableModel() { columnNames = new ArrayList<>(); rowNames = new ArrayList<>(); } - public void init(JTable table) { + public void init(JXTable table) { this.table = table; this.tableHeader = table.getTableHeader(); @@ -71,6 +72,7 @@ public class ResultTableModel extends AbstractTableModel { table.setRowSorter(null); table.setCellSelectionEnabled(true); table.setRowSelectionAllowed(true); + table.setAutoCreateColumnsFromModel(true); TableCellRenderer defaultHeaderRenderer = tableHeader.getDefaultRenderer(); TableCellRenderer headerRenderer = new TableCellRenderer() { @@ -95,6 +97,7 @@ public class ResultTableModel extends AbstractTableModel { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel comp = (JLabel) defaultHeaderRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); +// comp.setText(value == null ? "" : value.toString()); comp.setToolTipText(value == null ? "" : value.toString()); comp.setFont(getHeaderFont(table)); return comp; @@ -115,7 +118,14 @@ public class ResultTableModel extends AbstractTableModel { }; this.table.setDefaultRenderer(Object.class, renderer); this.table.setDefaultRenderer(String.class, renderer); - this.tableHeader.setDefaultRenderer(headerRenderer); +// this.tableHeader.setDefaultRenderer(headerRenderer); + this.table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + this.table.setFillsViewportHeight(true); + this.table.setShowHorizontalLines(true); + this.table.setColumnSelectionAllowed(true); + this.table.setRowSelectionAllowed(true); +// this.table.setCellSelectionEnabled(true); + this.tableHeader.setReorderingAllowed(true); } public void populate(Report report, DataMatrix incomingData) { @@ -142,7 +152,7 @@ public class ResultTableModel extends AbstractTableModel { withColumnHeader = !columnNames.isEmpty(); withRowHeader = !rowNames.isEmpty(); table.setTableHeader(!withColumnHeader ? null : tableHeader); - + table.createDefaultColumnsFromModel(); int nbRows = incomingData.getHeight(); int nbCols = incomingData.getWidth(); if (withRowHeader) { @@ -172,9 +182,13 @@ public class ResultTableModel extends AbstractTableModel { }); columnNames.add(0, ""); data.copyData(columnData); + } else if (withColumnHeader) { + } data.copyData(incomingData); fireTableStructureChanged(); + table.revalidate(); + table.repaint(); } public void clear() { ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/CopyResultToClipboard.java ===================================== @@ -40,7 +40,7 @@ public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> { private static final Logger log = LogManager.getLogger(CopyResultToClipboard.class); public CopyResultToClipboard() { - super(t("observe.ui.action.copy"), t("observe.ui.datasource.editor.actions.synchro.copy.tip"), "report-copy", 'C'); + super(""/*t("observe.ui.action.copy")*/, t("observe.ui.datasource.editor.actions.synchro.copy.tip"), "report-copy", 'C'); } public static void copyReportToClipBoard(Report report, ReportModel stepModel) { ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ToggleConfigure.java ===================================== @@ -0,0 +1,81 @@ +package fr.ird.observe.client.datasource.actions.report.actions; + +/*- + * #%L + * ObServe Client :: DataSource :: Actions + * %% + * Copyright (C) 2008 - 2022 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.actions.actions.AdminTabUIActionSupport; +import fr.ird.observe.client.datasource.actions.report.ReportUI; +import fr.ird.observe.client.datasource.editor.api.ObserveKeyStrokesEditorApi; +import org.nuiton.jaxx.runtime.swing.action.MenuAction; + +import javax.swing.JComponent; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.n; + +/** + * Created by tchemit on 03/10/2018. + * + * @author Tony Chemit - dev@tchemit.fr + */ +public class ToggleConfigure extends AdminTabUIActionSupport<ReportUI> { + + public ToggleConfigure() { + super("", n("observe.ui.action.configuration.tip"), "generate", ObserveKeyStrokesEditorApi.KEY_STROKE_NAVIGATION_CONFIGURE); +// setIcon(getContentScaledImage("configure")); + } + + @Override + public void init() { + super.init(); + ui.getConfigurePopup().addPopupMenuListener(new PopupMenuListener() { + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + ui.getToggleConfigure().setSelected(false); + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + ui.getToggleConfigure().setSelected(false); + } + }); + } + + @Override + protected void doActionPerformed(ActionEvent e, ReportUI ui) { + ui.getToggleConfigure().setSelected(true); + SwingUtilities.invokeLater(() -> { + JComponent c = ui.getToggleConfigure(); + JPopupMenu p = ui.getConfigurePopup(); + MenuAction.preparePopup(p, c, false); + }); + } + +} View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/89ef5bec7e5a959077cc2510ae... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/89ef5bec7e5a959077cc2510ae... You're receiving this email because of your account on gitlab.com.