Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
-
ebe457ca
by tchemit at 2019-09-25T09:29:37Z
18 changed files:
- client-core/src/main/i18n/getters/java.getter
- client-core/src/main/i18n/getters/jaxx.getter
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminActionModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIInitializer.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportConfigUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportModel.java
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jaxx
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUI.jcss
- client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java
- + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/ChooseFileReport.java
- + client-core/src/main/java/fr/ird/observe/client/ui/admin/report/actions/CopyResultToClipboard.java
- client-core/src/main/java/fr/ird/observe/client/ui/content/api/ContentUIInitializer.java
- client-db/src/main/java/fr/ird/observe/client/ui/util/UIHelperSupport.java
- observe-i18n/src/main/i18n/translations/observe_en_GB.properties
- observe-i18n/src/main/i18n/translations/observe_es_ES.properties
- observe-i18n/src/main/i18n/translations/observe_fr_FR.properties
Changes:
| ... | ... | @@ -46,6 +46,7 @@ observe.action.configuration.tip |
| 46 | 46 |
observe.action.connexions
|
| 47 | 47 |
observe.action.connexions.tip
|
| 48 | 48 |
observe.action.continue
|
| 49 |
+observe.action.copy
|
|
| 49 | 50 |
observe.action.copy.to.clipBoard
|
| 50 | 51 |
observe.action.copyFloatingObjectPartToLeft
|
| 51 | 52 |
observe.action.copyFloatingObjectPartToLeft.tip
|
| ... | ... | @@ -153,12 +154,10 @@ observe.actions.operation.message.needFix |
| 153 | 154 |
observe.actions.operation.message.running
|
| 154 | 155 |
observe.actions.operation.message.successed
|
| 155 | 156 |
observe.actions.report
|
| 156 |
-observe.actions.report.description
|
|
| 157 |
-observe.actions.report.title
|
|
| 158 |
-observe.actions.report.title.tip
|
|
| 159 | 157 |
observe.actions.saveLocal
|
| 160 | 158 |
observe.actions.saveLocal.description
|
| 161 | 159 |
observe.actions.synchro.cancel.tip
|
| 160 |
+observe.actions.synchro.copy.tip
|
|
| 162 | 161 |
observe.actions.synchro.data
|
| 163 | 162 |
observe.actions.synchro.data.copyToLeft.tip
|
| 164 | 163 |
observe.actions.synchro.data.copyToRight.tip
|
| ... | ... | @@ -262,6 +261,9 @@ observe.actions.validate.validator.message.header |
| 262 | 261 |
observe.actions.validate.validator.message.header.tip
|
| 263 | 262 |
observe.actions.validate.validator.scope.header
|
| 264 | 263 |
observe.actions.validate.validator.scope.header.tip
|
| 264 |
+observe.admin.report.description
|
|
| 265 |
+observe.admin.report.title
|
|
| 266 |
+observe.admin.report.title.tip
|
|
| 265 | 267 |
observe.admin.resume.no.operation.done
|
| 266 | 268 |
observe.admin.resume.operation.canceled
|
| 267 | 269 |
observe.admin.resume.operation.done
|
| ... | ... | @@ -9,15 +9,8 @@ observe.Id.species |
| 9 | 9 |
observe.Id.weightMeasureType
|
| 10 | 10 |
observe.Id.whenArriving
|
| 11 | 11 |
observe.Id.whenLeaving
|
| 12 |
-observe.action.auto.copy.to.clipboard
|
|
| 13 |
-observe.action.auto.copy.to.clipboard.tip
|
|
| 14 | 12 |
observe.action.configuration
|
| 15 | 13 |
observe.action.connexions
|
| 16 |
-observe.action.copy
|
|
| 17 |
-observe.action.copy.column.headers
|
|
| 18 |
-observe.action.copy.column.headers.tip
|
|
| 19 |
-observe.action.copy.row.headers
|
|
| 20 |
-observe.action.copy.row.headers.tip
|
|
| 21 | 14 |
observe.action.create
|
| 22 | 15 |
observe.action.delete
|
| 23 | 16 |
observe.action.floatingObjectPresets
|
| ... | ... | @@ -27,16 +20,6 @@ observe.action.save.all.tip |
| 27 | 20 |
observe.actions.longline.pairing.config
|
| 28 | 21 |
observe.actions.operation.configuration
|
| 29 | 22 |
observe.actions.operations
|
| 30 |
-observe.actions.report.config
|
|
| 31 |
-observe.actions.report.copy.options
|
|
| 32 |
-observe.actions.report.model.type
|
|
| 33 |
-observe.actions.report.report.description
|
|
| 34 |
-observe.actions.report.result
|
|
| 35 |
-observe.actions.report.select
|
|
| 36 |
-observe.actions.report.select.file
|
|
| 37 |
-observe.actions.report.select.file.tip
|
|
| 38 |
-observe.actions.report.variables
|
|
| 39 |
-observe.actions.synchro.copy.tip
|
|
| 40 | 23 |
observe.actions.synchro.data.actionsToPerform
|
| 41 | 24 |
observe.actions.synchro.referential.config.mode
|
| 42 | 25 |
observe.actions.synchro.referential.obsolete.entities.list
|
| ... | ... | @@ -51,6 +34,21 @@ observe.actions.validate.select.mode |
| 51 | 34 |
observe.actions.validate.select.mode.tip
|
| 52 | 35 |
observe.actions.validate.select.scope
|
| 53 | 36 |
observe.actions.validate.select.scope.tip
|
| 37 |
+observe.admin.report.auto.copy.to.clipboard
|
|
| 38 |
+observe.admin.report.auto.copy.to.clipboard.tip
|
|
| 39 |
+observe.admin.report.config
|
|
| 40 |
+observe.admin.report.copy.column.headers
|
|
| 41 |
+observe.admin.report.copy.column.headers.tip
|
|
| 42 |
+observe.admin.report.copy.options
|
|
| 43 |
+observe.admin.report.copy.row.headers
|
|
| 44 |
+observe.admin.report.copy.row.headers.tip
|
|
| 45 |
+observe.admin.report.model.type
|
|
| 46 |
+observe.admin.report.report.description
|
|
| 47 |
+observe.admin.report.result
|
|
| 48 |
+observe.admin.report.select
|
|
| 49 |
+observe.admin.report.select.file
|
|
| 50 |
+observe.admin.report.select.file.tip
|
|
| 51 |
+observe.admin.report.variables
|
|
| 54 | 52 |
observe.common.directory
|
| 55 | 53 |
observe.common.file
|
| 56 | 54 |
observe.common.global.progression.description
|
| ... | ... | @@ -6,21 +6,24 @@ |
| 6 | 6 |
* %%
|
| 7 | 7 |
* This program is free software: you can redistribute it and/or modify
|
| 8 | 8 |
* it under the terms of the GNU General Public License as
|
| 9 |
- * published by the Free Software Foundation, either version 3 of the
|
|
| 9 |
+ * published by the Free Software Foundation, either version 3 of the
|
|
| 10 | 10 |
* License, or (at your option) any later version.
|
| 11 |
- *
|
|
| 11 |
+ *
|
|
| 12 | 12 |
* This program is distributed in the hope that it will be useful,
|
| 13 | 13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 14 | 14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 15 | 15 |
* GNU General Public License for more details.
|
| 16 |
- *
|
|
| 17 |
- * You should have received a copy of the GNU General Public
|
|
| 16 |
+ *
|
|
| 17 |
+ * You should have received a copy of the GNU General Public
|
|
| 18 | 18 |
* License along with this program. If not, see
|
| 19 | 19 |
* <http://www.gnu.org/licenses/gpl-3.0.html>.
|
| 20 | 20 |
* #L%
|
| 21 | 21 |
*/
|
| 22 | 22 |
package fr.ird.observe.client.ui.admin;
|
| 23 | 23 |
|
| 24 |
+import io.ultreia.java4all.bean.JavaBean;
|
|
| 25 |
+import io.ultreia.java4all.bean.definition.JavaBeanDefinition;
|
|
| 26 |
+import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore;
|
|
| 24 | 27 |
import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel;
|
| 25 | 28 |
|
| 26 | 29 |
/**
|
| ... | ... | @@ -29,10 +32,23 @@ import org.nuiton.jaxx.runtime.swing.wizard.ext.WizardExtStepModel; |
| 29 | 32 |
* @author Tony Chemit - dev@tchemit.fr
|
| 30 | 33 |
* @since 1.4
|
| 31 | 34 |
*/
|
| 32 |
-public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> {
|
|
| 35 |
+public abstract class AdminActionModel extends WizardExtStepModel<AdminStep> implements JavaBean {
|
|
| 36 |
+ /**
|
|
| 37 |
+ * Lazy helper class that manages all java bean operations.
|
|
| 38 |
+ *
|
|
| 39 |
+ * @see #javaBeanDefinition()
|
|
| 40 |
+ */
|
|
| 41 |
+ private transient JavaBeanDefinition javaBeanDefinition;
|
|
| 33 | 42 |
|
| 34 | 43 |
protected AdminActionModel(AdminStep objectOperation) {
|
| 35 | 44 |
super(objectOperation);
|
| 36 | 45 |
}
|
| 37 | 46 |
|
| 47 |
+ @Override
|
|
| 48 |
+ public final JavaBeanDefinition javaBeanDefinition() {
|
|
| 49 |
+ return javaBeanDefinition == null
|
|
| 50 |
+ ? javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(getClass()).orElseThrow(() -> new NullPointerException("Can't find JavaBeanDefinition for " + getClass()))
|
|
| 51 |
+ : javaBeanDefinition;
|
|
| 52 |
+ }
|
|
| 53 |
+ |
|
| 38 | 54 |
}
|
| ... | ... | @@ -197,11 +197,11 @@ public enum AdminStep implements WizardExtStep { |
| 197 | 197 |
|
| 198 | 198 |
/** pour lancer la generation des rapports */
|
| 199 | 199 |
REPORT(
|
| 200 |
- n("observe.actions.report.title"),
|
|
| 201 |
- n("observe.actions.report.title.tip"),
|
|
| 200 |
+ n("observe.admin.report.title"),
|
|
| 201 |
+ n("observe.admin.report.title.tip"),
|
|
| 202 | 202 |
"report",
|
| 203 | 203 |
n("observe.actions.report"),
|
| 204 |
- n("observe.actions.report.description"),
|
|
| 204 |
+ n("observe.admin.report.description"),
|
|
| 205 | 205 |
ReportModel.class,
|
| 206 | 206 |
ReportUI.class,
|
| 207 | 207 |
false,
|
| ... | ... | @@ -25,7 +25,9 @@ package fr.ird.observe.client.ui.admin; |
| 25 | 25 |
import com.google.common.collect.ImmutableMap;
|
| 26 | 26 |
import fr.ird.observe.client.ObserveSwingApplicationContext;
|
| 27 | 27 |
import fr.ird.observe.client.ui.content.api.ContentUIInitializer;
|
| 28 |
+import fr.ird.observe.client.ui.util.BeanCheckBox;
|
|
| 28 | 29 |
import fr.ird.observe.client.ui.util.UIHelper;
|
| 30 |
+import fr.ird.observe.client.ui.util.UIHelperSupport;
|
|
| 29 | 31 |
import fr.ird.observe.dto.I18nEnumHelper;
|
| 30 | 32 |
import fr.ird.observe.dto.decoration.DecoratorService;
|
| 31 | 33 |
import org.apache.commons.lang3.BooleanUtils;
|
| ... | ... | @@ -80,7 +82,6 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { |
| 80 | 82 |
|
| 81 | 83 |
private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking";
|
| 82 | 84 |
|
| 83 |
- /** Logger. */
|
|
| 84 | 85 |
private static final Logger log = LogManager.getLogger(AdminTabUIInitializer.class);
|
| 85 | 86 |
|
| 86 | 87 |
protected final UI ui;
|
| ... | ... | @@ -115,6 +116,10 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { |
| 115 | 116 |
// init((JComponent) o, doNotBlockComponentIds);
|
| 116 | 117 |
// }
|
| 117 | 118 |
|
| 119 |
+ if (o instanceof BeanCheckBox) {
|
|
| 120 |
+ init((BeanCheckBox) o);
|
|
| 121 |
+ }
|
|
| 122 |
+ |
|
| 118 | 123 |
if (o instanceof AbstractButton) {
|
| 119 | 124 |
init((AbstractButton) o);
|
| 120 | 125 |
continue;
|
| ... | ... | @@ -191,6 +196,15 @@ public class AdminTabUIInitializer<UI extends AdminTabUI> { |
| 191 | 196 |
}
|
| 192 | 197 |
}
|
| 193 | 198 |
|
| 199 |
+ protected void init(BeanCheckBox editor) {
|
|
| 200 |
+ log.debug("init simple boolean editor " + editor.getName());
|
|
| 201 |
+ String propertyName = editor.getProperty();
|
|
| 202 |
+ if (StringUtils.isEmpty(propertyName)) {
|
|
| 203 |
+ editor.setProperty(editor.getName());
|
|
| 204 |
+ }
|
|
| 205 |
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
|
|
| 206 |
+ }
|
|
| 207 |
+ |
|
| 194 | 208 |
@SuppressWarnings("unchecked")
|
| 195 | 209 |
protected void init(BeanComboBox beanComboBox) {
|
| 196 | 210 |
if (log.isDebugEnabled()) {
|
| ... | ... | @@ -59,10 +59,7 @@ protected void finalize() throws Throwable { |
| 59 | 59 |
<JLabel id='modelTypeLabel'/>
|
| 60 | 60 |
</cell>
|
| 61 | 61 |
<cell weightx='1' fill="horizontal" columns="2">
|
| 62 |
- <EnumEditor id="modelType"
|
|
| 63 |
- genericType='ObserveModelType'
|
|
| 64 |
- constructorParams='ObserveModelType.class'
|
|
| 65 |
- onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/>
|
|
| 62 |
+ <EnumEditor id="modelType" genericType='ObserveModelType' constructorParams='ObserveModelType.class' onItemStateChanged='getHandler().setModelTypeFromEvent(event)'/>
|
|
| 66 | 63 |
</cell>
|
| 67 | 64 |
</row>
|
| 68 | 65 |
<row>
|
| ... | ... | @@ -70,11 +67,10 @@ protected void finalize() throws Throwable { |
| 70 | 67 |
<JLabel id='reportFileLabel'/>
|
| 71 | 68 |
</cell>
|
| 72 | 69 |
<cell weightx='1' fill="horizontal">
|
| 73 |
- <JTextField id="reportFile"
|
|
| 74 |
- onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/>
|
|
| 70 |
+ <JTextField id="reportFile" onKeyReleased='stepModel.setReportFile(new File(((JTextField)event.getSource()).getText()))'/>
|
|
| 75 | 71 |
</cell>
|
| 76 | 72 |
<cell anchor="east">
|
| 77 |
- <JButton id="reportFileChooserAction" onActionPerformed="getHandler().chooseReportFile()"/>
|
|
| 73 |
+ <JButton id="chooseFileReport"/>
|
|
| 78 | 74 |
</cell>
|
| 79 | 75 |
</row>
|
| 80 | 76 |
</Table>
|
| ... | ... | @@ -21,11 +21,11 @@ |
| 21 | 21 |
*/
|
| 22 | 22 |
|
| 23 | 23 |
#reportConfig {
|
| 24 |
- border:{new TitledBorder(t("observe.actions.report.config"))};
|
|
| 24 |
+ border:{new TitledBorder(t("observe.admin.report.config"))};
|
|
| 25 | 25 |
}
|
| 26 | 26 |
|
| 27 | 27 |
#modelTypeLabel {
|
| 28 |
- text:"observe.actions.report.model.type";
|
|
| 28 |
+ text:"observe.admin.report.model.type";
|
|
| 29 | 29 |
}
|
| 30 | 30 |
|
| 31 | 31 |
#modelType {
|
| ... | ... | @@ -33,15 +33,11 @@ |
| 33 | 33 |
}
|
| 34 | 34 |
|
| 35 | 35 |
#reportFileLabel {
|
| 36 |
- text:"observe.actions.report.select.file";
|
|
| 37 |
- toolTipText:"observe.actions.report.select.file.tip";
|
|
| 36 |
+ text:"observe.admin.report.select.file";
|
|
| 37 |
+ toolTipText:"observe.admin.report.select.file.tip";
|
|
| 38 | 38 |
}
|
| 39 | 39 |
|
| 40 | 40 |
#reportFile {
|
| 41 | 41 |
text:{getStringValue(stepModel.getReportFile())};
|
| 42 | 42 |
}
|
| 43 | 43 |
|
| 44 |
-#reportFileChooserAction {
|
|
| 45 |
- actionIcon:"fileChooser";
|
|
| 46 |
-}
|
|
| 47 |
- |
| ... | ... | @@ -32,8 +32,9 @@ import fr.ird.observe.client.ui.tree.selection.SelectionTreeModel; |
| 32 | 32 |
import fr.ird.observe.dto.ObserveModelType;
|
| 33 | 33 |
import fr.ird.observe.services.service.actions.report.Report;
|
| 34 | 34 |
import fr.ird.observe.services.service.actions.report.ReportBuilder;
|
| 35 |
-import org.apache.logging.log4j.Logger;
|
|
| 35 |
+import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition;
|
|
| 36 | 36 |
import org.apache.logging.log4j.LogManager;
|
| 37 |
+import org.apache.logging.log4j.Logger;
|
|
| 37 | 38 |
|
| 38 | 39 |
import java.beans.PropertyChangeListener;
|
| 39 | 40 |
import java.io.File;
|
| ... | ... | @@ -50,6 +51,7 @@ import java.util.stream.Collectors; |
| 50 | 51 |
* @author Tony Chemit - dev@tchemit.fr
|
| 51 | 52 |
* @since 1.3
|
| 52 | 53 |
*/
|
| 54 |
+@GenerateJavaBeanDefinition
|
|
| 53 | 55 |
public class ReportModel extends AdminActionModel {
|
| 54 | 56 |
|
| 55 | 57 |
public static final String SELECTED_TRIP_PROPERTY_NAME = "selectedTrip";
|
| ... | ... | @@ -28,6 +28,8 @@ |
| 28 | 28 |
fr.ird.observe.client.ui.admin.AdminUI
|
| 29 | 29 |
fr.ird.observe.services.service.actions.report.Report
|
| 30 | 30 |
|
| 31 |
+ fr.ird.observe.client.ui.util.BeanCheckBox
|
|
| 32 |
+ |
|
| 31 | 33 |
java.awt.Dimension
|
| 32 | 34 |
|
| 33 | 35 |
javax.swing.DefaultComboBoxModel
|
| ... | ... | @@ -81,17 +83,15 @@ public void destroy() { |
| 81 | 83 |
</JScrollPane>
|
| 82 | 84 |
|
| 83 | 85 |
<JPanel id="copyPane" constraints='BorderLayout.SOUTH'>
|
| 84 |
- <JPanel id='copyOptions' constraints='BorderLayout.NORTH'>
|
|
| 85 |
- <JCheckBox id='autoCopyToClipboard'
|
|
| 86 |
- onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/>
|
|
| 87 |
- <JCheckBox id='copyRowHeaders'
|
|
| 88 |
- onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/>
|
|
| 89 |
- <JCheckBox id='copyColumnHeaders'
|
|
| 90 |
- onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/>
|
|
| 86 |
+ <JPanel id='copyOptions' constraints='BorderLayout.NORTH' beanScope="stepModel">
|
|
| 87 |
+ <BeanCheckBox id='autoCopyToClipboard'/>
|
|
| 88 |
+<!-- onStateChanged='getStepModel().setAutoCopyToClipboard(((JCheckBox)event.getSource()).isSelected())'/>-->
|
|
| 89 |
+ <BeanCheckBox id='copyRowHeaders'/>
|
|
| 90 |
+<!-- onStateChanged='getStepModel().setCopyRowHeaders(((JCheckBox)event.getSource()).isSelected())'/>-->
|
|
| 91 |
+ <BeanCheckBox id='copyColumnHeaders'/>
|
|
| 92 |
+<!-- onStateChanged='getStepModel().setCopyColumnHeaders(((JCheckBox)event.getSource()).isSelected())'/>-->
|
|
| 91 | 93 |
</JPanel>
|
| 92 |
- <JButton id="copy" constraints='BorderLayout.CENTER'
|
|
| 93 |
- onActionPerformed='getHandler().copyReportToClipBoard(getStepModel().getSelectedReport(), getResultModel(), getStepModel().isCopyRowHeaders(),
|
|
| 94 |
- getStepModel().isCopyColumnHeaders())'/>
|
|
| 94 |
+ <JButton id="copyResultToClipboard" constraints='BorderLayout.CENTER'/>
|
|
| 95 | 95 |
|
| 96 | 96 |
</JPanel>
|
| 97 | 97 |
|
| ... | ... | @@ -35,18 +35,17 @@ JToolBar { |
| 35 | 35 |
}
|
| 36 | 36 |
|
| 37 | 37 |
#reportVariableSelectorPanel {
|
| 38 |
- border:{new TitledBorder(t("observe.actions.report.variables"))};
|
|
| 38 |
+ border:{new TitledBorder(t("observe.admin.report.variables"))};
|
|
| 39 | 39 |
layout:{new GridLayout(0,1)};
|
| 40 | 40 |
}
|
| 41 | 41 |
|
| 42 | 42 |
#copyOptions {
|
| 43 |
- border:{new TitledBorder(t("observe.actions.report.copy.options"))};
|
|
| 43 |
+ border:{new TitledBorder(t("observe.admin.report.copy.options"))};
|
|
| 44 | 44 |
layout:{new GridLayout(0,1)};
|
| 45 | 45 |
}
|
| 46 | 46 |
|
| 47 | 47 |
#resultPane {
|
| 48 |
- border:{new TitledBorder(t("observe.actions.report.result"))};
|
|
| 49 |
- /*columnHeaderView:{resultTable.getTableHeader()};*/
|
|
| 48 |
+ border:{new TitledBorder(t("observe.admin.report.result"))};
|
|
| 50 | 49 |
verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED};
|
| 51 | 50 |
}
|
| 52 | 51 |
|
| ... | ... | @@ -56,7 +55,7 @@ JToolBar { |
| 56 | 55 |
}
|
| 57 | 56 |
|
| 58 | 57 |
#requestSelectorPane {
|
| 59 |
- border:{new TitledBorder(t("observe.actions.report.select"))};
|
|
| 58 |
+ border:{new TitledBorder(t("observe.admin.report.select"))};
|
|
| 60 | 59 |
layout:{new BorderLayout()};
|
| 61 | 60 |
}
|
| 62 | 61 |
|
| ... | ... | @@ -66,7 +65,7 @@ JToolBar { |
| 66 | 65 |
}
|
| 67 | 66 |
|
| 68 | 67 |
#reportDescriptionPane {
|
| 69 |
- columnHeaderView:{UIHelper.newLabel(t("observe.actions.report.report.description") ,"information", 10)};
|
|
| 68 |
+ columnHeaderView:{UIHelper.newLabel(t("observe.admin.report.report.description") ,"information", 10)};
|
|
| 70 | 69 |
minimumSize:{new Dimension(0,0)};
|
| 71 | 70 |
}
|
| 72 | 71 |
|
| ... | ... | @@ -86,29 +85,25 @@ JToolBar { |
| 86 | 85 |
#copyPane {
|
| 87 | 86 |
layout:{new BorderLayout()};
|
| 88 | 87 |
}
|
| 88 |
+ |
|
| 89 | 89 |
#autoCopyToClipboard {
|
| 90 |
- text:"observe.action.auto.copy.to.clipboard";
|
|
| 91 |
- toolTipText:"observe.action.auto.copy.to.clipboard.tip";
|
|
| 92 |
- selected:{stepModel.isAutoCopyToClipboard()};
|
|
| 90 |
+ text:"observe.admin.report.auto.copy.to.clipboard";
|
|
| 91 |
+ toolTipText:"observe.admin.report.auto.copy.to.clipboard.tip";
|
|
| 92 |
+ /*selected:{stepModel.isAutoCopyToClipboard()};*/
|
|
| 93 | 93 |
}
|
| 94 | 94 |
|
| 95 | 95 |
#copyRowHeaders {
|
| 96 |
- text:"observe.action.copy.row.headers";
|
|
| 97 |
- toolTipText:"observe.action.copy.row.headers.tip";
|
|
| 98 |
- selected:{stepModel.isCopyRowHeaders()};
|
|
| 96 |
+ text:"observe.admin.report.copy.row.headers";
|
|
| 97 |
+ toolTipText:"observe.admin.report.copy.row.headers.tip";
|
|
| 98 |
+ /*selected:{stepModel.isCopyRowHeaders()};*/
|
|
| 99 | 99 |
}
|
| 100 | 100 |
|
| 101 | 101 |
#copyColumnHeaders {
|
| 102 |
- text:"observe.action.copy.column.headers";
|
|
| 103 |
- toolTipText:"observe.action.copy.column.headers.tip";
|
|
| 104 |
- selected:{stepModel.isCopyColumnHeaders()};
|
|
| 105 |
-}
|
|
| 106 |
- |
|
| 107 |
-#copy {
|
|
| 108 |
- text:"observe.action.copy";
|
|
| 109 |
- toolTipText:"observe.actions.synchro.copy.tip";
|
|
| 110 |
- actionIcon:"report-copy";
|
|
| 111 |
- /*enabled:{stepModel.getSelectedReport() != null};*/
|
|
| 112 |
- enabled:{stepModel.isValid() };
|
|
| 113 |
- mnemonic:C;
|
|
| 102 |
+ text:"observe.admin.report.copy.column.headers";
|
|
| 103 |
+ toolTipText:"observe.admin.report.copy.column.headers.tip";
|
|
| 104 |
+ /*selected:{stepModel.isCopyColumnHeaders()};*/
|
|
| 105 |
+}
|
|
| 106 |
+ |
|
| 107 |
+#copyResultToClipboard {
|
|
| 108 |
+ enabled:{stepModel.isValid()};
|
|
| 114 | 109 |
}
|
| ... | ... | @@ -26,7 +26,9 @@ import fr.ird.observe.client.ObserveSwingTechnicalException; |
| 26 | 26 |
import fr.ird.observe.client.db.ObserveSwingDataSource;
|
| 27 | 27 |
import fr.ird.observe.client.ui.admin.AdminStep;
|
| 28 | 28 |
import fr.ird.observe.client.ui.admin.AdminTabUIHandler;
|
| 29 |
+import fr.ird.observe.client.ui.admin.AdminTabUIInitializer;
|
|
| 29 | 30 |
import fr.ird.observe.client.ui.admin.config.ConfigUI;
|
| 31 |
+import fr.ird.observe.client.ui.admin.report.actions.CopyResultToClipboard;
|
|
| 30 | 32 |
import fr.ird.observe.client.ui.util.UIHelper;
|
| 31 | 33 |
import fr.ird.observe.client.ui.util.UIHelperSupport;
|
| 32 | 34 |
import fr.ird.observe.dto.ObserveModelType;
|
| ... | ... | @@ -61,7 +63,6 @@ import java.awt.BorderLayout; |
| 61 | 63 |
import java.awt.Component;
|
| 62 | 64 |
import java.awt.Font;
|
| 63 | 65 |
import java.awt.event.ItemEvent;
|
| 64 |
-import java.io.File;
|
|
| 65 | 66 |
import java.util.ArrayList;
|
| 66 | 67 |
import java.util.List;
|
| 67 | 68 |
import java.util.Map;
|
| ... | ... | @@ -87,26 +88,21 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 87 | 88 |
|
| 88 | 89 |
@Override
|
| 89 | 90 |
public void afterInit(ReportUI ui) {
|
| 91 |
+ new AdminTabUIInitializer<>(ui).initUI();
|
|
| 90 | 92 |
super.afterInit(ui);
|
| 91 |
- if (log.isDebugEnabled()) {
|
|
| 92 |
- log.debug(" specialized for [" + ui.getStep() + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(this.ui));
|
|
| 93 |
- }
|
|
| 93 |
+ log.debug(String.format(" specialized for [%s] for main ui %s@%d", ui.getStep(), parentUI.getClass().getName(), System.identityHashCode(this.ui)));
|
|
| 94 | 94 |
revalidateTabUI = ui::revalidate;
|
| 95 |
- UIHelper.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI());
|
|
| 95 |
+ UIHelperSupport.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI());
|
|
| 96 | 96 |
|
| 97 | 97 |
ReportModel stepModel = getStepModel();
|
| 98 | 98 |
stepModel.addPropertyChangeListener(evt -> {
|
| 99 |
- |
|
| 100 | 99 |
if (ui.getModel().getModelState() == WizardState.CANCELED) {
|
| 101 |
- |
|
| 102 | 100 |
// action annulée, on ne declanche plus rien
|
| 103 | 101 |
return;
|
| 104 | 102 |
}
|
| 105 | 103 |
String propertyName = evt.getPropertyName();
|
| 106 | 104 |
Object newValue = evt.getNewValue();
|
| 107 |
- |
|
| 108 | 105 |
ReportModel source = (ReportModel) evt.getSource();
|
| 109 |
- |
|
| 110 | 106 |
if (ReportModel.REPORTS_PROPERTY_NAME.equals(propertyName)) {
|
| 111 | 107 |
List<?> reports = (List<?>) newValue;
|
| 112 | 108 |
onReportsChanged(ui, reports);
|
| ... | ... | @@ -119,8 +115,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 119 | 115 |
} else if (ReportModel.VALID_PROPERTY_NAME.equals(propertyName)) {
|
| 120 | 116 |
final Boolean valid = (Boolean) newValue;
|
| 121 | 117 |
SwingUtilities.invokeLater(() -> onValidChanged(source, valid != null && valid));
|
| 122 |
- |
|
| 123 |
- |
|
| 124 | 118 |
}
|
| 125 | 119 |
});
|
| 126 | 120 |
|
| ... | ... | @@ -130,14 +124,12 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 130 | 124 |
@Override
|
| 131 | 125 |
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
|
| 132 | 126 |
if (value == null) {
|
| 133 |
- |
|
| 134 | 127 |
// on affiche une message de sélection de report
|
| 135 | 128 |
value = t("observe.message.select.report");
|
| 136 | 129 |
}
|
| 137 | 130 |
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
| 138 | 131 |
}
|
| 139 | 132 |
}
|
| 140 |
- |
|
| 141 | 133 |
);
|
| 142 | 134 |
// ajout du renderer sur le tableau
|
| 143 | 135 |
|
| ... | ... | @@ -180,15 +172,11 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 180 | 172 |
ui.getResultTable().setDefaultRenderer(String.class, renderer);
|
| 181 | 173 |
|
| 182 | 174 |
// initialisation de l'ui de configuration
|
| 183 |
- if (log.isInfoEnabled()) {
|
|
| 184 |
- log.info("Init extra configuration for " + ui.getName());
|
|
| 185 |
- }
|
|
| 175 |
+ log.info(String.format("Init extra configuration for %s", ui.getName()));
|
|
| 186 | 176 |
|
| 187 | 177 |
ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG);
|
| 188 | 178 |
JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this);
|
| 189 |
- |
|
| 190 | 179 |
ReportConfigUI extraConfig = new ReportConfigUI(tx);
|
| 191 |
- |
|
| 192 | 180 |
configUI.getExtraConfig().add(extraConfig);
|
| 193 | 181 |
}
|
| 194 | 182 |
|
| ... | ... | @@ -199,11 +187,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 199 | 187 |
}
|
| 200 | 188 |
|
| 201 | 189 |
void updateSelectedReportFromEvent(ItemEvent event) {
|
| 202 |
- |
|
| 203 | 190 |
if (event.getStateChange() == ItemEvent.SELECTED) {
|
| 204 |
- if (log.isInfoEnabled()) {
|
|
| 205 |
- log.info("Item selected!");
|
|
| 206 |
- }
|
|
| 207 | 191 |
JComboBox source = (JComboBox) event.getSource();
|
| 208 | 192 |
updateSelectedReport((Report) source.getSelectedItem());
|
| 209 | 193 |
}
|
| ... | ... | @@ -212,11 +196,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 212 | 196 |
void updateSelectedReport(Report report) {
|
| 213 | 197 |
ui.getModel().setBusy(true);
|
| 214 | 198 |
try {
|
| 215 |
- if (log.isInfoEnabled()) {
|
|
| 216 |
- log.info("New selected report : " + report);
|
|
| 217 |
- }
|
|
| 199 |
+ log.info(String.format("New selected report : %s", report));
|
|
| 218 | 200 |
getStepModel().setSelectedReport(report);
|
| 219 |
- |
|
| 220 | 201 |
} finally {
|
| 221 | 202 |
ui.getModel().setBusy(false);
|
| 222 | 203 |
}
|
| ... | ... | @@ -232,64 +213,24 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 232 | 213 |
private void updateVariable(JComboBox combo, Object value) {
|
| 233 | 214 |
String variableName = (String) combo.getClientProperty(VARIABLE_NAME);
|
| 234 | 215 |
if (variableName == null) {
|
| 235 |
- throw new IllegalStateException(
|
|
| 236 |
- "No 'variableName' clientProperty on " + combo);
|
|
| 216 |
+ throw new IllegalStateException("No 'variableName' clientProperty on " + combo);
|
|
| 237 | 217 |
}
|
| 238 |
- log.info("Set variable [" + variableName + "] to value " + value);
|
|
| 218 |
+ log.info(String.format("Set variable [%s] to value %s", variableName, value));
|
|
| 239 | 219 |
getStepModel().addVariable(variableName, value);
|
| 240 | 220 |
}
|
| 241 | 221 |
|
| 242 |
- void chooseReportFile() {
|
|
| 243 |
- ReportModel model = ui.getModel().getReportModel();
|
|
| 244 |
- File f = UIHelper.chooseFile(
|
|
| 245 |
- ui,
|
|
| 246 |
- t("observe.title.choose.reportFile"),
|
|
| 247 |
- t("observe.action.choose.reportFile"),
|
|
| 248 |
- model.getReportFile(),
|
|
| 249 |
- "^.+\\.properties$",
|
|
| 250 |
- t("observe.action.choose.reportFile.description"));
|
|
| 251 |
- model.setReportFile(f);
|
|
| 252 |
- }
|
|
| 253 |
- |
|
| 254 |
- void copyReportToClipBoard(Report report,
|
|
| 255 |
- ResultTableModel model,
|
|
| 256 |
- boolean copyRowHeaders,
|
|
| 257 |
- boolean copyColumnHeaders) {
|
|
| 258 |
- if (report == null) {
|
|
| 259 |
- |
|
| 260 |
- // pas de report sélectionné, rien à faire
|
|
| 261 |
- return;
|
|
| 262 |
- }
|
|
| 263 |
- |
|
| 264 |
- if (log.isDebugEnabled()) {
|
|
| 265 |
- log.debug("Will copy result of report " + report.getName());
|
|
| 266 |
- log.debug("Result dimension : [" + model.getRowCount() + "," +
|
|
| 267 |
- model.getColumnCount() + "]");
|
|
| 268 |
- }
|
|
| 269 |
- String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders);
|
|
| 270 |
- UIHelper.copyToClipBoard(content);
|
|
| 271 |
- }
|
|
| 272 |
- |
|
| 273 | 222 |
private void onReportsChanged(ReportUI tabUI, List<?> newValue) {
|
| 274 |
- |
|
| 275 |
- if (log.isDebugEnabled()) {
|
|
| 276 |
- log.debug("New reports : " + newValue);
|
|
| 277 |
- }
|
|
| 278 |
- |
|
| 223 |
+ log.debug("New reports : " + newValue);
|
|
| 279 | 224 |
// on ajoute toujours une premiere valeur null (pour ne rien selectionne)
|
| 280 | 225 |
newValue.add(0, null);
|
| 281 |
- |
|
| 282 | 226 |
// on charge le nouveau modèle dans la liste déroulante
|
| 283 |
- UIHelper.fillComboBox(tabUI.getReportSelector(), newValue, null);
|
|
| 227 |
+ UIHelperSupport.fillComboBox(tabUI.getReportSelector(), newValue, null);
|
|
| 284 | 228 |
}
|
| 285 | 229 |
|
| 286 | 230 |
@SuppressWarnings({"unchecked"})
|
| 287 | 231 |
private void onSelectedReportChanged(ReportUI tabUI, ReportModel model, Report report) {
|
| 288 |
- |
|
| 289 | 232 |
log.info("New selected report [" + report + "]");
|
| 290 |
- |
|
| 291 | 233 |
ui.getModel().setBusy(true);
|
| 292 |
- |
|
| 293 | 234 |
try {
|
| 294 | 235 |
// on regénère l'ui de configuration des variables
|
| 295 | 236 |
JPanel variablesPanel = tabUI.getReportVariableSelectorPanel();
|
| ... | ... | @@ -303,30 +244,22 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 303 | 244 |
model.getResultModel().clear();
|
| 304 | 245 |
|
| 305 | 246 |
if (report != null) {
|
| 306 |
- |
|
| 307 | 247 |
try {
|
| 308 |
- |
|
| 309 | 248 |
ObserveSwingDataSource dataSource = ui.getModel().getConfigModel().getLocalSourceModel().getSafeSource(true);
|
| 310 |
- |
|
| 311 | 249 |
ReportService reportService = dataSource.getReportService();
|
| 312 |
- |
|
| 313 | 250 |
report = reportService.populateVariables(report, ui.getModel().getSelectDataModel().getSelectedTripIds());
|
| 314 |
- |
|
| 315 | 251 |
} catch (Exception e) {
|
| 316 | 252 |
throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e);
|
| 317 | 253 |
}
|
| 318 | 254 |
|
| 319 | 255 |
if (useVariables) {
|
| 320 |
- |
|
| 321 | 256 |
// on construit les ui pour chaqsue variable
|
| 322 | 257 |
for (ReportVariable variable : report.getVariables()) {
|
| 323 | 258 |
String variableName = variable.getName();
|
| 324 |
- // String value = variables.get(variableName);
|
|
| 325 | 259 |
Set values = variable.getValues();
|
| 326 | 260 |
List<Object> universe = new ArrayList<>(values);
|
| 327 |
- |
|
| 328 |
- Decorator decorator;
|
|
| 329 | 261 |
log.info("Variable type: " + variable.getType());
|
| 262 |
+ Decorator decorator;
|
|
| 330 | 263 |
Class type;
|
| 331 | 264 |
if (ReferentialDto.class.isAssignableFrom(variable.getType()) && !universe.isEmpty()) {
|
| 332 | 265 |
type = DtoModelHelper.fromReferentialDto(variable.getType()).toReferenceType();
|
| ... | ... | @@ -340,7 +273,6 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 340 | 273 |
}
|
| 341 | 274 |
log.info("Variable real type: " + type);
|
| 342 | 275 |
BeanFilterableComboBox combo = UIHelperSupport.newBeanFilterableComboBox(type, (JXPathDecorator) decorator, universe);
|
| 343 |
- |
|
| 344 | 276 |
combo.setShowReset(true);
|
| 345 | 277 |
JPanel p = new JPanel(new BorderLayout());
|
| 346 | 278 |
p.add(new JLabel(t(I18nDecoratorHelper.getTypeI18nKey(variable.getType()))), BorderLayout.WEST);
|
| ... | ... | @@ -349,20 +281,14 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 349 | 281 |
JComboBox jComboBox = combo.getCombobox();
|
| 350 | 282 |
jComboBox.putClientProperty(VARIABLE_NAME, variableName);
|
| 351 | 283 |
jComboBox.addItemListener(e -> {
|
| 352 |
- |
|
| 353 | 284 |
JComboBox comboBox = (JComboBox) e.getSource();
|
| 354 |
- |
|
| 355 | 285 |
if (e.getStateChange() == ItemEvent.DESELECTED) {
|
| 356 |
- |
|
| 357 |
- // ne rien faire de l'évènement de déselection
|
|
| 358 |
- // sauf si le modèle devient vide
|
|
| 359 |
- |
|
| 286 |
+ // ne rien faire de l'évènement de déselection sauf si le modèle devient vide
|
|
| 360 | 287 |
if (comboBox.getSelectedItem() == null) {
|
| 361 | 288 |
updateVariable(comboBox, null);
|
| 362 | 289 |
}
|
| 363 | 290 |
return;
|
| 364 | 291 |
}
|
| 365 |
- |
|
| 366 | 292 |
Object o = e.getItem();
|
| 367 | 293 |
updateVariable(comboBox, o);
|
| 368 | 294 |
});
|
| ... | ... | @@ -371,51 +297,35 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 371 | 297 |
|
| 372 | 298 |
// on revalide la disposition de l'onglet
|
| 373 | 299 |
SwingUtilities.invokeLater(revalidateTabUI);
|
| 374 |
- |
|
| 375 | 300 |
Map<String, Object> variables = model.getVariables();
|
| 376 | 301 |
updateValidState(report, variables);
|
| 377 | 302 |
}
|
| 378 | 303 |
} finally {
|
| 379 |
- |
|
| 380 | 304 |
ui.getModel().setBusy(false);
|
| 381 |
- |
|
| 382 | 305 |
}
|
| 383 | 306 |
}
|
| 384 | 307 |
|
| 385 | 308 |
private void onVariablesChanges(ReportModel model, Map<String, Object> variables) {
|
| 386 |
- |
|
| 387 | 309 |
Report report = model.getSelectedReport();
|
| 388 | 310 |
if (report != null) {
|
| 389 |
- |
|
| 390 | 311 |
updateValidState(report, variables);
|
| 391 | 312 |
}
|
| 392 | 313 |
}
|
| 393 | 314 |
|
| 394 | 315 |
private void onValidChanged(ReportModel model, boolean valid) {
|
| 395 |
- |
|
| 396 |
- if (log.isInfoEnabled()) {
|
|
| 397 |
- log.info("valid state changed to " + valid);
|
|
| 398 |
- }
|
|
| 399 |
- |
|
| 316 |
+ log.info("valid state changed to " + valid);
|
|
| 400 | 317 |
if (!valid) {
|
| 401 | 318 |
// calcul des données et contruction du tableau
|
| 402 | 319 |
model.getResultModel().clear();
|
| 403 | 320 |
return;
|
| 404 | 321 |
}
|
| 405 |
- |
|
| 406 | 322 |
ui.getModel().setBusy(true);
|
| 407 |
- |
|
| 408 | 323 |
try {
|
| 409 |
- |
|
| 410 | 324 |
Report report = model.getSelectedReport();
|
| 411 |
- |
|
| 412 | 325 |
ImmutableSet<String> tripIds = ui.getModel().getSelectDataModel().getSelectedTripIds();
|
| 413 | 326 |
DataDtoReference trip = ui.getModel().getSelectDataModel().getSelectedTrip();
|
| 414 |
- |
|
| 415 | 327 |
log.info(String.format("Build result for report [%s] on %s", report.getName(), trip));
|
| 416 |
- |
|
| 417 | 328 |
Map<String, Object> variables = model.getVariables();
|
| 418 |
- |
|
| 419 | 329 |
for (ReportVariable variable : report.getVariables()) {
|
| 420 | 330 |
Object value = variables.get(variable.getName());
|
| 421 | 331 |
variable.setSelectedValue(value);
|
| ... | ... | @@ -429,11 +339,8 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 429 | 339 |
}
|
| 430 | 340 |
|
| 431 | 341 |
ReportService reportService = dataSource.getReportService();
|
| 432 |
- |
|
| 433 | 342 |
DataMatrix data = reportService.executeReport(report, tripIds);
|
| 434 |
- |
|
| 435 | 343 |
timeLog.log(startTime, "execute", report.getName());
|
| 436 |
- |
|
| 437 | 344 |
log.info("Result to display:\n" + data.getClipboardContent(true, true, false, '\t'));
|
| 438 | 345 |
|
| 439 | 346 |
// calcul des données et contruction du tableau
|
| ... | ... | @@ -441,10 +348,10 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa |
| 441 | 348 |
|
| 442 | 349 |
// mise a jour du clipboard automatique si requis
|
| 443 | 350 |
if (model.isAutoCopyToClipboard()) {
|
| 444 |
- copyReportToClipBoard(report,
|
|
| 445 |
- model.getResultModel(),
|
|
| 446 |
- model.isCopyRowHeaders(),
|
|
| 447 |
- model.isCopyColumnHeaders());
|
|
| 351 |
+ CopyResultToClipboard.copyReportToClipBoard(report,
|
|
| 352 |
+ model.getResultModel(),
|
|
| 353 |
+ model.isCopyRowHeaders(),
|
|
| 354 |
+ model.isCopyColumnHeaders());
|
|
| 448 | 355 |
}
|
| 449 | 356 |
} catch (Exception e) {
|
| 450 | 357 |
UIHelper.handlingError("Could not obtain report data", e);
|
| 1 |
+package fr.ird.observe.client.ui.admin.report.actions;
|
|
| 2 |
+ |
|
| 3 |
+/*-
|
|
| 4 |
+ * #%L
|
|
| 5 |
+ * ObServe :: Client core
|
|
| 6 |
+ * %%
|
|
| 7 |
+ * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io
|
|
| 8 |
+ * %%
|
|
| 9 |
+ * This program is free software: you can redistribute it and/or modify
|
|
| 10 |
+ * it under the terms of the GNU General Public License as
|
|
| 11 |
+ * published by the Free Software Foundation, either version 3 of the
|
|
| 12 |
+ * License, or (at your option) any later version.
|
|
| 13 |
+ *
|
|
| 14 |
+ * This program is distributed in the hope that it will be useful,
|
|
| 15 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 16 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 17 |
+ * GNU General Public License for more details.
|
|
| 18 |
+ *
|
|
| 19 |
+ * You should have received a copy of the GNU General Public
|
|
| 20 |
+ * License along with this program. If not, see
|
|
| 21 |
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 22 |
+ * #L%
|
|
| 23 |
+ */
|
|
| 24 |
+ |
|
| 25 |
+import fr.ird.observe.client.ui.ObserveKeyStrokesSupport;
|
|
| 26 |
+import fr.ird.observe.client.ui.admin.report.ReportConfigUI;
|
|
| 27 |
+import fr.ird.observe.client.ui.admin.report.ReportModel;
|
|
| 28 |
+import fr.ird.observe.client.ui.util.UIHelper;
|
|
| 29 |
+import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport;
|
|
| 30 |
+ |
|
| 31 |
+import java.awt.event.ActionEvent;
|
|
| 32 |
+import java.io.File;
|
|
| 33 |
+ |
|
| 34 |
+import static io.ultreia.java4all.i18n.I18n.t;
|
|
| 35 |
+ |
|
| 36 |
+public class ChooseFileReport extends JComponentActionSupport<ReportConfigUI> {
|
|
| 37 |
+ |
|
| 38 |
+ public ChooseFileReport() {
|
|
| 39 |
+ super("", "", "fileChooser", ObserveKeyStrokesSupport.KEY_STROKE_STORAGE_DO_CHOOSE_FILE);
|
|
| 40 |
+ }
|
|
| 41 |
+ |
|
| 42 |
+ @Override
|
|
| 43 |
+ protected void doActionPerformed(ActionEvent e, ReportConfigUI ui) {
|
|
| 44 |
+ ReportModel model = ui.getModel().getReportModel();
|
|
| 45 |
+ File f = UIHelper.chooseFile(
|
|
| 46 |
+ ui,
|
|
| 47 |
+ t("observe.title.choose.reportFile"),
|
|
| 48 |
+ t("observe.action.choose.reportFile"),
|
|
| 49 |
+ model.getReportFile(),
|
|
| 50 |
+ "^.+\\.properties$",
|
|
| 51 |
+ t("observe.action.choose.reportFile.description"));
|
|
| 52 |
+ if (f != null) {
|
|
| 53 |
+ model.setReportFile(f);
|
|
| 54 |
+ }
|
|
| 55 |
+ }
|
|
| 56 |
+}
|
| 1 |
+package fr.ird.observe.client.ui.admin.report.actions;
|
|
| 2 |
+ |
|
| 3 |
+/*-
|
|
| 4 |
+ * #%L
|
|
| 5 |
+ * ObServe :: Client core
|
|
| 6 |
+ * %%
|
|
| 7 |
+ * Copyright (C) 2008 - 2019 IRD, Code Lutin, Ultreia.io
|
|
| 8 |
+ * %%
|
|
| 9 |
+ * This program is free software: you can redistribute it and/or modify
|
|
| 10 |
+ * it under the terms of the GNU General Public License as
|
|
| 11 |
+ * published by the Free Software Foundation, either version 3 of the
|
|
| 12 |
+ * License, or (at your option) any later version.
|
|
| 13 |
+ *
|
|
| 14 |
+ * This program is distributed in the hope that it will be useful,
|
|
| 15 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| 16 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| 17 |
+ * GNU General Public License for more details.
|
|
| 18 |
+ *
|
|
| 19 |
+ * You should have received a copy of the GNU General Public
|
|
| 20 |
+ * License along with this program. If not, see
|
|
| 21 |
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
|
|
| 22 |
+ * #L%
|
|
| 23 |
+ */
|
|
| 24 |
+ |
|
| 25 |
+import fr.ird.observe.client.ui.admin.actions.AdminTabUIActionSupport;
|
|
| 26 |
+import fr.ird.observe.client.ui.admin.report.ReportModel;
|
|
| 27 |
+import fr.ird.observe.client.ui.admin.report.ReportUI;
|
|
| 28 |
+import fr.ird.observe.client.ui.admin.report.ResultTableModel;
|
|
| 29 |
+import fr.ird.observe.client.ui.util.UIHelperSupport;
|
|
| 30 |
+import fr.ird.observe.services.service.actions.report.Report;
|
|
| 31 |
+import org.apache.logging.log4j.LogManager;
|
|
| 32 |
+import org.apache.logging.log4j.Logger;
|
|
| 33 |
+ |
|
| 34 |
+import java.awt.event.ActionEvent;
|
|
| 35 |
+ |
|
| 36 |
+import static io.ultreia.java4all.i18n.I18n.t;
|
|
| 37 |
+ |
|
| 38 |
+public class CopyResultToClipboard extends AdminTabUIActionSupport<ReportUI> {
|
|
| 39 |
+ |
|
| 40 |
+ private static final Logger log = LogManager.getLogger(CopyResultToClipboard.class);
|
|
| 41 |
+ |
|
| 42 |
+ public CopyResultToClipboard() {
|
|
| 43 |
+ super(t("observe.action.copy"), t("observe.actions.synchro.copy.tip"), "report-copy", 'C');
|
|
| 44 |
+ }
|
|
| 45 |
+ |
|
| 46 |
+ @Override
|
|
| 47 |
+ protected void doActionPerformed(ActionEvent e, ReportUI ui) {
|
|
| 48 |
+ ReportModel stepModel = ui.getStepModel();
|
|
| 49 |
+ Report report = stepModel.getSelectedReport();
|
|
| 50 |
+ ResultTableModel model = stepModel.getResultModel();
|
|
| 51 |
+ copyReportToClipBoard(report, model, stepModel.isCopyRowHeaders(), stepModel.isCopyColumnHeaders());
|
|
| 52 |
+ }
|
|
| 53 |
+ |
|
| 54 |
+ public static void copyReportToClipBoard(Report report,
|
|
| 55 |
+ ResultTableModel model,
|
|
| 56 |
+ boolean copyRowHeaders,
|
|
| 57 |
+ boolean copyColumnHeaders) {
|
|
| 58 |
+ if (report == null) {
|
|
| 59 |
+ return;
|
|
| 60 |
+ }
|
|
| 61 |
+ |
|
| 62 |
+ log.info(String.format("Will copy result of report %s - result dimension : [%d,%d]", report.getName(), model.getRowCount(), model.getColumnCount()));
|
|
| 63 |
+ String content = model.getClipbordContent(copyRowHeaders, copyColumnHeaders);
|
|
| 64 |
+ UIHelperSupport.copyToClipBoard(content);
|
|
| 65 |
+ }
|
|
| 66 |
+}
|
| ... | ... | @@ -33,6 +33,7 @@ import fr.ird.observe.client.ui.util.BeanDatePicker; |
| 33 | 33 |
import fr.ird.observe.client.ui.util.BeanEnumEditor;
|
| 34 | 34 |
import fr.ird.observe.client.ui.util.BooleanEditor;
|
| 35 | 35 |
import fr.ird.observe.client.ui.util.UIHelper;
|
| 36 |
+import fr.ird.observe.client.ui.util.UIHelperSupport;
|
|
| 36 | 37 |
import fr.ird.observe.client.ui.util.tripMap.ObserveMapPane;
|
| 37 | 38 |
import fr.ird.observe.client.validation.ObserveSwingValidator;
|
| 38 | 39 |
import fr.ird.observe.dto.I18nEnumHelper;
|
| ... | ... | @@ -132,9 +133,6 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 132 | 133 |
public static final String SUB_TABBED_PANE = "subTabbedPane";
|
| 133 | 134 |
private static final String CLIENT_PROPERTY_NOT_BLOCKING = "notBlocking";
|
| 134 | 135 |
|
| 135 |
- private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean";
|
|
| 136 |
- private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean";
|
|
| 137 |
- |
|
| 138 | 136 |
private static final Logger log = LogManager.getLogger(ContentUIInitializer.class);
|
| 139 | 137 |
|
| 140 | 138 |
protected final UI ui;
|
| ... | ... | @@ -365,7 +363,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 365 | 363 |
editor.getModel().addPropertyChangeListener("format", e -> ((EditableContentUI<?>) ui).getValidator().doValidate());
|
| 366 | 364 |
|
| 367 | 365 |
if (editor.getBean() != null) {
|
| 368 |
- if (isBindingFromBean(editor)) {
|
|
| 366 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 369 | 367 |
editor.getModel().addPropertyChangeListener(propertyName, e -> {
|
| 370 | 368 |
Float oldValue = editor.getModel().getTemperature();
|
| 371 | 369 |
Float newValue = (Float) e.getNewValue();
|
| ... | ... | @@ -382,7 +380,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 382 | 380 |
editor.setProperty(editor.getName());
|
| 383 | 381 |
}
|
| 384 | 382 |
if (editor.getBean() != null) {
|
| 385 |
- if (isBindingFromBean(editor)) {
|
|
| 383 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 386 | 384 |
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
|
| 387 | 385 |
String oldValue = editor.getText();
|
| 388 | 386 |
String newValue = (String) e.getNewValue();
|
| ... | ... | @@ -400,7 +398,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 400 | 398 |
}
|
| 401 | 399 |
|
| 402 | 400 |
if (editor.getBean() != null) {
|
| 403 |
- if (isBindingFromBean(editor)) {
|
|
| 401 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 404 | 402 |
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
|
| 405 | 403 |
String oldValue = editor.getText();
|
| 406 | 404 |
String newValue = (String) e.getNewValue();
|
| ... | ... | @@ -418,7 +416,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 418 | 416 |
}
|
| 419 | 417 |
|
| 420 | 418 |
if (editor.getBean() != null) {
|
| 421 |
- if (isBindingFromBean(editor)) {
|
|
| 419 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 422 | 420 |
editor.getModel().addPropertyChangeListener(editor.getProperty(), e -> {
|
| 423 | 421 |
String oldValue = editor.getText();
|
| 424 | 422 |
String newValue = (String) e.getNewValue();
|
| ... | ... | @@ -495,7 +493,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 495 | 493 |
}
|
| 496 | 494 |
editor.init();
|
| 497 | 495 |
if (editor.getBean() != null) {
|
| 498 |
- if (isBindingFromBean(editor)) {
|
|
| 496 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 499 | 497 |
((JavaBean) editor.getBean()).addPropertyChangeListener(config.getProperty(), e -> {
|
| 500 | 498 |
Number oldValue = editor.getModel().getNumberValue();
|
| 501 | 499 |
Number newValue = (Number) e.getNewValue();
|
| ... | ... | @@ -523,7 +521,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 523 | 521 |
JavaBean bean = (JavaBean) editor.getBean();
|
| 524 | 522 |
String property = editor.getProperty();
|
| 525 | 523 |
if (bean != null) {
|
| 526 |
- if (isBindingFromBean(editor)) {
|
|
| 524 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 527 | 525 |
bean.addPropertyChangeListener(property, e -> {
|
| 528 | 526 |
Object oldValue = editor.getSelectedItem();
|
| 529 | 527 |
Object newValue = e.getNewValue();
|
| ... | ... | @@ -573,7 +571,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 573 | 571 |
JavaBean bean = (JavaBean) editor.getModel().getBean();
|
| 574 | 572 |
String property = editor.getModel().getProperty();
|
| 575 | 573 |
if (bean != null) {
|
| 576 |
- if (isBindingFromBean(editor)) {
|
|
| 574 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 577 | 575 |
bean.addPropertyChangeListener(property, e -> {
|
| 578 | 576 |
Collection oldValue = editor.getModel().getSelected();
|
| 579 | 577 |
Collection newValue = (Collection) e.getNewValue();
|
| ... | ... | @@ -606,7 +604,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 606 | 604 |
JavaBean bean = (JavaBean) editor.getModel().getBean();
|
| 607 | 605 |
String property = editor.getModel().getPropertyTime();
|
| 608 | 606 |
if (bean != null) {
|
| 609 |
- if (isBindingFromBean(editor)) {
|
|
| 607 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 610 | 608 |
bean.addPropertyChangeListener(property, e -> {
|
| 611 | 609 |
Date oldValue = editor.getModel().getTime();
|
| 612 | 610 |
Date newValue = (Date) e.getNewValue();
|
| ... | ... | @@ -658,7 +656,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 658 | 656 |
JavaBean bean = (JavaBean) editor.getModel().getBean();
|
| 659 | 657 |
String property = editor.getModel().getPropertyDate();
|
| 660 | 658 |
if (bean != null) {
|
| 661 |
- if (isBindingFromBean(editor)) {
|
|
| 659 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 662 | 660 |
bean.addPropertyChangeListener(property, e -> {
|
| 663 | 661 |
Date oldValue = editor.getModel().getDate();
|
| 664 | 662 |
Date newValue = (Date) e.getNewValue();
|
| ... | ... | @@ -693,7 +691,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 693 | 691 |
|
| 694 | 692 |
JavaBean bean = (JavaBean) editor.getModel().getBean();
|
| 695 | 693 |
if (bean != null) {
|
| 696 |
- if (isBindingFromBean(editor)) {
|
|
| 694 |
+ if (UIHelperSupport.isBindingFromBean(editor)) {
|
|
| 697 | 695 |
bean.addPropertyChangeListener(editor.getModel().getPropertyLatitude(), e -> {
|
| 698 | 696 |
Float oldValue = editor.getModel().getLatitude();
|
| 699 | 697 |
Float newValue = (Float) e.getNewValue();
|
| ... | ... | @@ -755,7 +753,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 755 | 753 |
if (StringUtils.isEmpty(propertyName)) {
|
| 756 | 754 |
editor.setProperty(editor.getName());
|
| 757 | 755 |
}
|
| 758 |
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
|
|
| 756 |
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
|
|
| 759 | 757 |
}
|
| 760 | 758 |
|
| 761 | 759 |
protected void init(BeanCheckBox editor) {
|
| ... | ... | @@ -764,7 +762,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 764 | 762 |
if (StringUtils.isEmpty(propertyName)) {
|
| 765 | 763 |
editor.setProperty(editor.getName());
|
| 766 | 764 |
}
|
| 767 |
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
|
|
| 765 |
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
|
|
| 768 | 766 |
}
|
| 769 | 767 |
|
| 770 | 768 |
protected <B extends Enum<B>> void init(BeanEnumEditor<B> editor) {
|
| ... | ... | @@ -773,7 +771,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 773 | 771 |
if (StringUtils.isEmpty(propertyName)) {
|
| 774 | 772 |
editor.setProperty(editor.getName());
|
| 775 | 773 |
}
|
| 776 |
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
|
|
| 774 |
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
|
|
| 777 | 775 |
|
| 778 | 776 |
ImmutableMap.Builder<B, String> labelsBuilder = ImmutableMap.builder();
|
| 779 | 777 |
for (B e : EnumSet.allOf(editor.getType())) {
|
| ... | ... | @@ -791,7 +789,7 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 791 | 789 |
if (StringUtils.isEmpty(propertyName)) {
|
| 792 | 790 |
editor.setProperty(editor.getName());
|
| 793 | 791 |
}
|
| 794 |
- editor.init(isBindingFromBean(editor), isBindingToBean(editor));
|
|
| 792 |
+ editor.init(UIHelperSupport.isBindingFromBean(editor), UIHelperSupport.isBindingToBean(editor));
|
|
| 795 | 793 |
editor.setLocale(ObserveSwingApplicationContextSupport.get().getConfig().getLocale());
|
| 796 | 794 |
JFormattedTextField formattedTextField = editor.getEditor();
|
| 797 | 795 |
formattedTextField.setEditable(true);
|
| ... | ... | @@ -840,16 +838,6 @@ public class ContentUIInitializer<UI extends ContentUI> { |
| 840 | 838 |
log.debug("init table editor " + editor.getName());
|
| 841 | 839 |
}
|
| 842 | 840 |
|
| 843 |
- private boolean isBindingToBean(JComponent editor) {
|
|
| 844 |
- Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN);
|
|
| 845 |
- return skip == null || !skip;
|
|
| 846 |
- }
|
|
| 847 |
- |
|
| 848 |
- private boolean isBindingFromBean(JComponent editor) {
|
|
| 849 |
- Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN);
|
|
| 850 |
- return skip == null || !skip;
|
|
| 851 |
- }
|
|
| 852 |
- |
|
| 853 | 841 |
private boolean isAutoSelectOnFocus(JComponent comp) {
|
| 854 | 842 |
Boolean selectOnFocus = (Boolean) comp.getClientProperty("selectOnFocus");
|
| 855 | 843 |
return BooleanUtils.isTrue(selectOnFocus);
|
| ... | ... | @@ -76,6 +76,8 @@ public class UIHelperSupport extends SwingUtil { |
| 76 | 76 |
public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new LogPropertyChanged();
|
| 77 | 77 |
|
| 78 | 78 |
static private final Logger log = LogManager.getLogger(UIHelperSupport.class);
|
| 79 |
+ private static final String CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN = "skipBindingToBean";
|
|
| 80 |
+ private static final String CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN = "skipBindingFromBean";
|
|
| 79 | 81 |
|
| 80 | 82 |
/**
|
| 81 | 83 |
* Choisir un fichier via un sélecteur graphique de fichiers.
|
| ... | ... | @@ -357,6 +359,16 @@ public class UIHelperSupport extends SwingUtil { |
| 357 | 359 |
return new JAXXInitialContext().add(model).add(ui);
|
| 358 | 360 |
}
|
| 359 | 361 |
|
| 362 |
+ public static boolean isBindingToBean(JComponent editor) {
|
|
| 363 |
+ Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_TO_BEAN);
|
|
| 364 |
+ return skip == null || !skip;
|
|
| 365 |
+ }
|
|
| 366 |
+ |
|
| 367 |
+ public static boolean isBindingFromBean(JComponent editor) {
|
|
| 368 |
+ Boolean skip = (Boolean) editor.getClientProperty(CLIENT_PROPERTY_SKIP_BINDING_FROM_BEAN);
|
|
| 369 |
+ return skip == null || !skip;
|
|
| 370 |
+ }
|
|
| 371 |
+ |
|
| 360 | 372 |
public static class LogPropertyChanged implements PropertyChangeListener {
|
| 361 | 373 |
@Override
|
| 362 | 374 |
public void propertyChange(PropertyChangeEvent evt) {
|
| ... | ... | @@ -33,8 +33,6 @@ observe.action.about.tip=About ObServe... |
| 33 | 33 |
observe.action.admin.cancel=Cancel wizard
|
| 34 | 34 |
observe.action.admin.close=Close wizard
|
| 35 | 35 |
observe.action.apply=Apply
|
| 36 |
-observe.action.auto.copy.to.clipboard=Automatic copy in clipboard
|
|
| 37 |
-observe.action.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result
|
|
| 38 | 36 |
observe.action.back.to.list=Back to list
|
| 39 | 37 |
observe.action.back.to.list.tip=Go back to the list
|
| 40 | 38 |
observe.action.cancel=Cancel
|
| ... | ... | @@ -84,10 +82,6 @@ observe.action.connexions=Manage connections |
| 84 | 82 |
observe.action.connexions.tip=Manage connection profiles
|
| 85 | 83 |
observe.action.continue=Continue
|
| 86 | 84 |
observe.action.copy=Copy
|
| 87 |
-observe.action.copy.column.headers=Copy column headers
|
|
| 88 |
-observe.action.copy.column.headers.tip=Add in result column headers
|
|
| 89 |
-observe.action.copy.row.headers=Copy row header
|
|
| 90 |
-observe.action.copy.row.headers.tip=Add in result row headers
|
|
| 91 | 85 |
observe.action.copy.to.clipBoard=Copy in clipboard
|
| 92 | 86 |
observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving
|
| 93 | 87 |
observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving
|
| ... | ... | @@ -236,18 +230,6 @@ observe.actions.operation.message.running=Operation <%1$s> is running... |
| 236 | 230 |
observe.actions.operation.message.successed=operation <%1$> is done.
|
| 237 | 231 |
observe.actions.operations=operations
|
| 238 | 232 |
observe.actions.report=Report
|
| 239 |
-observe.actions.report.config=Report configuration
|
|
| 240 |
-observe.actions.report.copy.options=Copy into clipboard options
|
|
| 241 |
-observe.actions.report.description=Generate reports
|
|
| 242 |
-observe.actions.report.model.type=Model type to use
|
|
| 243 |
-observe.actions.report.report.description=Description of selected report
|
|
| 244 |
-observe.actions.report.result=Results
|
|
| 245 |
-observe.actions.report.select=Select report
|
|
| 246 |
-observe.actions.report.select.file=File of reports definitions
|
|
| 247 |
-observe.actions.report.select.file.tip=Choose file of reports definitions
|
|
| 248 |
-observe.actions.report.title=Help to generat reports
|
|
| 249 |
-observe.actions.report.title.tip=Help to generate reports
|
|
| 250 |
-observe.actions.report.variables=Variables configuration
|
|
| 251 | 233 |
observe.actions.saveLocal=Save local database
|
| 252 | 234 |
observe.actions.saveLocal.description=Save modifcations on local database
|
| 253 | 235 |
observe.actions.synchro.cancel.tip=Cancel
|
| ... | ... | @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message |
| 369 | 351 |
observe.actions.validate.validator.message.header.tip=Message
|
| 370 | 352 |
observe.actions.validate.validator.scope.header=...
|
| 371 | 353 |
observe.actions.validate.validator.scope.header.tip=Type of message
|
| 354 |
+observe.admin.report.auto.copy.to.clipboard=Automatic copy in clipboard
|
|
| 355 |
+observe.admin.report.auto.copy.to.clipboard.tip=Copy automaticly in clipboard with report result
|
|
| 356 |
+observe.admin.report.config=Report configuration
|
|
| 357 |
+observe.admin.report.copy.column.headers=Copy column headers
|
|
| 358 |
+observe.admin.report.copy.column.headers.tip=Add in result column headers
|
|
| 359 |
+observe.admin.report.copy.options=Copy into clipboard options
|
|
| 360 |
+observe.admin.report.copy.row.headers=Copy row header
|
|
| 361 |
+observe.admin.report.copy.row.headers.tip=Add in result row headers
|
|
| 362 |
+observe.admin.report.description=Generate reports
|
|
| 363 |
+observe.admin.report.model.type=Model type to use
|
|
| 364 |
+observe.admin.report.report.description=Description of selected report
|
|
| 365 |
+observe.admin.report.result=Results
|
|
| 366 |
+observe.admin.report.select=Select report
|
|
| 367 |
+observe.admin.report.select.file=File of reports definitions
|
|
| 368 |
+observe.admin.report.select.file.tip=Choose file of reports definitions
|
|
| 369 |
+observe.admin.report.title=Help to generat reports
|
|
| 370 |
+observe.admin.report.title.tip=Help to generate reports
|
|
| 371 |
+observe.admin.report.variables=Variables configuration
|
|
| 372 | 372 |
observe.admin.resume.no.operation.done=No operation done.
|
| 373 | 373 |
observe.admin.resume.operation.canceled=operation canceled
|
| 374 | 374 |
observe.admin.resume.operation.done=operation done
|
| ... | ... | @@ -33,8 +33,6 @@ observe.action.about.tip=A cerca de ObServe... |
| 33 | 33 |
observe.action.admin.cancel=Anular el asintente
|
| 34 | 34 |
observe.action.admin.close=Cerrar el asistente
|
| 35 | 35 |
observe.action.apply=Aplicar
|
| 36 |
-observe.action.auto.copy.to.clipboard=Copia automatica al portapapeles
|
|
| 37 |
-observe.action.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados
|
|
| 38 | 36 |
observe.action.back.to.list=Volver a la lista
|
| 39 | 37 |
observe.action.back.to.list.tip=Volver a la lista de datos
|
| 40 | 38 |
observe.action.cancel=Cancelar
|
| ... | ... | @@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions \#TODO |
| 84 | 82 |
observe.action.connexions.tip=Gérer les profiles de connexion \#TODO
|
| 85 | 83 |
observe.action.continue=Continuar
|
| 86 | 84 |
observe.action.copy=Copiar en el portapeles
|
| 87 |
-observe.action.copy.column.headers=Copiar los encabezados de columnas
|
|
| 88 |
-observe.action.copy.column.headers.tip=Añadir al resultado las cabeceras de columna
|
|
| 89 |
-observe.action.copy.row.headers=Copiar las cabeceras de linea
|
|
| 90 |
-observe.action.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna)
|
|
| 91 | 85 |
observe.action.copy.to.clipBoard=Copiar el contenido en el portapapeles
|
| 92 | 86 |
observe.action.copyFloatingObjectPartToLeft=Copy values from leaving to arriving \#TODO
|
| 93 | 87 |
observe.action.copyFloatingObjectPartToLeft.tip=Copy values from leaving to arriving \#TODO
|
| ... | ... | @@ -236,18 +230,6 @@ observe.actions.operation.message.running=La operación < %1$s > se está ejecut |
| 236 | 230 |
observe.actions.operation.message.successed=La operación < %1$s > se terminó.
|
| 237 | 231 |
observe.actions.operations=Operaciones a realizar
|
| 238 | 232 |
observe.actions.report=Cuadros de síntesis
|
| 239 |
-observe.actions.report.config=Configuración de los informes
|
|
| 240 |
-observe.actions.report.copy.options=Opciones de copia en el portapapeles
|
|
| 241 |
-observe.actions.report.description=Generar los cuadros de síntesis del informe de fin del embarque
|
|
| 242 |
-observe.actions.report.model.type=Tipo de modelo a utilizar
|
|
| 243 |
-observe.actions.report.report.description=Descripción del informe seleccionado
|
|
| 244 |
-observe.actions.report.result=Resultados del informe
|
|
| 245 |
-observe.actions.report.select=Selección del informe
|
|
| 246 |
-observe.actions.report.select.file=Archivo de definición de informes
|
|
| 247 |
-observe.actions.report.select.file.tip=Elegir el archivo de definición de informes
|
|
| 248 |
-observe.actions.report.title=Ayuda a la generación de informes
|
|
| 249 |
-observe.actions.report.title.tip=Ayuda a la generación del informe de fin del embarque
|
|
| 250 |
-observe.actions.report.variables=Configuración de variables
|
|
| 251 | 233 |
observe.actions.saveLocal=Copia de seguridad de la base local
|
| 252 | 234 |
observe.actions.saveLocal.description=Guardar las modificationes realizadas en la base locale
|
| 253 | 235 |
observe.actions.synchro.cancel.tip=Cancelar
|
| ... | ... | @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Mensaje |
| 369 | 351 |
observe.actions.validate.validator.message.header.tip=El texto del mensaje
|
| 370 | 352 |
observe.actions.validate.validator.scope.header=...
|
| 371 | 353 |
observe.actions.validate.validator.scope.header.tip=El tipo del mensaje
|
| 354 |
+observe.admin.report.auto.copy.to.clipboard=Copia automatica al portapapeles
|
|
| 355 |
+observe.admin.report.auto.copy.to.clipboard.tip=Puesta a punto automáticamente el contenido del portapapeles con los resultados
|
|
| 356 |
+observe.admin.report.config=Configuración de los informes
|
|
| 357 |
+observe.admin.report.copy.column.headers=Copiar los encabezados de columnas
|
|
| 358 |
+observe.admin.report.copy.column.headers.tip=Añadir al resultado las cabeceras de columna
|
|
| 359 |
+observe.admin.report.copy.options=Opciones de copia en el portapapeles
|
|
| 360 |
+observe.admin.report.copy.row.headers=Copiar las cabeceras de linea
|
|
| 361 |
+observe.admin.report.copy.row.headers.tip=Añadir al resultado las cabeceras de linea (ej. la primera columna)
|
|
| 362 |
+observe.admin.report.description=Generar los cuadros de síntesis del informe de fin del embarque
|
|
| 363 |
+observe.admin.report.model.type=Tipo de modelo a utilizar
|
|
| 364 |
+observe.admin.report.report.description=Descripción del informe seleccionado
|
|
| 365 |
+observe.admin.report.result=Resultados del informe
|
|
| 366 |
+observe.admin.report.select=Selección del informe
|
|
| 367 |
+observe.admin.report.select.file=Archivo de definición de informes
|
|
| 368 |
+observe.admin.report.select.file.tip=Elegir el archivo de definición de informes
|
|
| 369 |
+observe.admin.report.title=Ayuda a la generación de informes
|
|
| 370 |
+observe.admin.report.title.tip=Ayuda a la generación del informe de fin del embarque
|
|
| 371 |
+observe.admin.report.variables=Configuración de variables
|
|
| 372 | 372 |
observe.admin.resume.no.operation.done=Ninguna operación realizada
|
| 373 | 373 |
observe.admin.resume.operation.canceled=operación cancelada
|
| 374 | 374 |
observe.admin.resume.operation.done=operacion realizada
|
| ... | ... | @@ -33,8 +33,6 @@ observe.action.about.tip=À propos d'ObServe... |
| 33 | 33 |
observe.action.admin.cancel=Annulation de l'assistant
|
| 34 | 34 |
observe.action.admin.close=Fermeture de l'assistant
|
| 35 | 35 |
observe.action.apply=Appliquer
|
| 36 |
-observe.action.auto.copy.to.clipboard=Copie automatique dans le presse-papier
|
|
| 37 |
-observe.action.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats
|
|
| 38 | 36 |
observe.action.back.to.list=Retour à la liste
|
| 39 | 37 |
observe.action.back.to.list.tip=Retour à la liste des données
|
| 40 | 38 |
observe.action.cancel=Annuler
|
| ... | ... | @@ -84,10 +82,6 @@ observe.action.connexions=Gérer les connexions |
| 84 | 82 |
observe.action.connexions.tip=Gérer les profiles de connexion
|
| 85 | 83 |
observe.action.continue=Continuer
|
| 86 | 84 |
observe.action.copy=Copier dans le presse-papier
|
| 87 |
-observe.action.copy.column.headers=Copier les entêtes de colonne
|
|
| 88 |
-observe.action.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne)
|
|
| 89 |
-observe.action.copy.row.headers=Copier les entêtes de ligne
|
|
| 90 |
-observe.action.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne)
|
|
| 91 | 85 |
observe.action.copy.to.clipBoard=Copier le contenu dans le presse-papier
|
| 92 | 86 |
observe.action.copyFloatingObjectPartToLeft=Recopier les valeurs du départ vers l'arrivée
|
| 93 | 87 |
observe.action.copyFloatingObjectPartToLeft.tip=Recopier les valeurs du départ vers l'arrivée
|
| ... | ... | @@ -236,18 +230,6 @@ observe.actions.operation.message.running=L'opération < %1$s > est en cours d'e |
| 236 | 230 |
observe.actions.operation.message.successed=L'opération < %1$s > est terminée.
|
| 237 | 231 |
observe.actions.operations=Opérations à effectuer
|
| 238 | 232 |
observe.actions.report=Tableaux de synthèse
|
| 239 |
-observe.actions.report.config=Configuration des reports
|
|
| 240 |
-observe.actions.report.copy.options=Options de copie dans le presse-papier
|
|
| 241 |
-observe.actions.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement
|
|
| 242 |
-observe.actions.report.model.type=Type de modèle à utiliser
|
|
| 243 |
-observe.actions.report.report.description=Description du rapport sélectionné
|
|
| 244 |
-observe.actions.report.result=Résultats du rapport
|
|
| 245 |
-observe.actions.report.select=Sélection du rapport
|
|
| 246 |
-observe.actions.report.select.file=Fichier de définition de reports
|
|
| 247 |
-observe.actions.report.select.file.tip=Choisir le fichier de définition des reports
|
|
| 248 |
-observe.actions.report.title=Aide à la génération de rapport
|
|
| 249 |
-observe.actions.report.title.tip=Aide à la génération du rapport de fin d'embarquement
|
|
| 250 |
-observe.actions.report.variables=Configuration des variables
|
|
| 251 | 233 |
observe.actions.saveLocal=Sauvegarde de la base locale
|
| 252 | 234 |
observe.actions.saveLocal.description=Sauvegarder les modifications effectuées vers la base locale
|
| 253 | 235 |
observe.actions.synchro.cancel.tip=Annuler
|
| ... | ... | @@ -369,6 +351,24 @@ observe.actions.validate.validator.message.header=Message |
| 369 | 351 |
observe.actions.validate.validator.message.header.tip=Le texte du message
|
| 370 | 352 |
observe.actions.validate.validator.scope.header=...
|
| 371 | 353 |
observe.actions.validate.validator.scope.header.tip=Le type de message
|
| 354 |
+observe.admin.report.auto.copy.to.clipboard=Copie automatique dans le presse-papier
|
|
| 355 |
+observe.admin.report.auto.copy.to.clipboard.tip=Mettre à jour automatiquement le contenu du presse-papier avec les résultats
|
|
| 356 |
+observe.admin.report.config=Configuration des reports
|
|
| 357 |
+observe.admin.report.copy.column.headers=Copier les entêtes de colonne
|
|
| 358 |
+observe.admin.report.copy.column.headers.tip=Ajoute dans le résultat les entêtes de colonne (i.e la première ligne)
|
|
| 359 |
+observe.admin.report.copy.options=Options de copie dans le presse-papier
|
|
| 360 |
+observe.admin.report.copy.row.headers=Copier les entêtes de ligne
|
|
| 361 |
+observe.admin.report.copy.row.headers.tip=Ajoute dans le résultat les entêtes de ligne (i.e la première colonne)
|
|
| 362 |
+observe.admin.report.description=Générer les tableaux de synthèse du rapport de fin d'embarquement
|
|
| 363 |
+observe.admin.report.model.type=Type de modèle à utiliser
|
|
| 364 |
+observe.admin.report.report.description=Description du rapport sélectionné
|
|
| 365 |
+observe.admin.report.result=Résultats du rapport
|
|
| 366 |
+observe.admin.report.select=Sélection du rapport
|
|
| 367 |
+observe.admin.report.select.file=Fichier de définition de reports
|
|
| 368 |
+observe.admin.report.select.file.tip=Choisir le fichier de définition des reports
|
|
| 369 |
+observe.admin.report.title=Aide à la génération de rapport
|
|
| 370 |
+observe.admin.report.title.tip=Aide à la génération du rapport de fin d'embarquement
|
|
| 371 |
+observe.admin.report.variables=Configuration des variables
|
|
| 372 | 372 |
observe.admin.resume.no.operation.done=Aucune opération réalisée.
|
| 373 | 373 |
observe.admin.resume.operation.canceled=opération annulée
|
| 374 | 374 |
observe.admin.resume.operation.done=opération réussie
|