branch develop updated (28d0af6 -> 2a4947f)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See http://git.codelutin.com/tutti.git from 28d0af6 clean code new afe0a89 fix weight popup dimension new 63a362b clean code new a754747 use new API new 2a4947f improve code The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 2a4947f9454fd3fe6e818bc88646f127fcca74f4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:45 2015 +0100 improve code commit a75474726754d507e28e708db33efa6c148d02c7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:20 2015 +0100 use new API commit 63a362b9a9a04d1f9b70650b9a4232d2c78efe13 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:07 2015 +0100 clean code commit afe0a899d370c4995ee24e0e17bc0ec6bbd12935 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 12:35:45 2015 +0100 fix weight popup dimension Summary of changes: .../operation/catches/EditCatchesUIHandler.java | 208 +++++++++++++-------- .../marinelitter/MarineLitterBatchUIHandler.java | 8 +- .../ui/swing/util/AbstractTuttiBeanUIModel.java | 6 +- .../tutti/ui/swing/util/catches/EnterWeightUI.jaxx | 5 +- .../ui/swing/util/computable/ComputableData.java | 42 ++--- 5 files changed, 147 insertions(+), 122 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit afe0a899d370c4995ee24e0e17bc0ec6bbd12935 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 12:35:45 2015 +0100 fix weight popup dimension --- .../java/fr/ifremer/tutti/ui/swing/util/catches/EnterWeightUI.jaxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/catches/EnterWeightUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/catches/EnterWeightUI.jaxx index ad2593a..cc4e08b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/catches/EnterWeightUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/catches/EnterWeightUI.jaxx @@ -19,7 +19,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<JDialog id='dialog' layout='{new BorderLayout()}' +<JDialog id='dialog' layout='{new BorderLayout()}' minimumSize="{new Dimension(350,100)}" resizable="false" implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, EnterWeightUIHandler>'> <import> fr.ifremer.tutti.type.WeightUnit; @@ -27,6 +27,7 @@ fr.ifremer.tutti.ui.swing.util.TuttiUIUtil org.nuiton.jaxx.widgets.number.NumberEditor + java.awt.Dimension </import> <script><![CDATA[ @@ -52,7 +53,7 @@ public Float openAndGetWeightValue(String weightLabel, Float originalWeight, Wei <Table id='table' fill='both' constraints='BorderLayout.CENTER'> <row> - <cell insets='5, 10, 10, 10'> + <cell weightx="1"> <NumberEditor id='editor'/> </cell> </row> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 63a362b9a9a04d1f9b70650b9a4232d2c78efe13 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:07 2015 +0100 clean code --- .../ui/swing/util/AbstractTuttiBeanUIModel.java | 6 ++-- .../ui/swing/util/computable/ComputableData.java | 42 +++++++--------------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java index d92e6f7..1e58eb6 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java @@ -24,7 +24,7 @@ package fr.ifremer.tutti.ui.swing.util; import fr.ifremer.tutti.persistence.entities.TuttiEntity; import org.jdesktop.beans.AbstractSerializableBean; -import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; +import org.nuiton.jaxx.application.bean.JavaBeanObject; import org.nuiton.util.CollectionUtil; import org.nuiton.util.beans.Binder; @@ -37,12 +37,10 @@ import java.util.List; * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean implements TuttiEntity, PropagatePropertyChangeListener.PropagatePropertyChange { +public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean implements TuttiEntity, JavaBeanObject { private static final long serialVersionUID = 1L; -// public static final String PROPERTY_ID = "id"; - public static final String PROPERTY_MODIFY = "modify"; public static final String PROPERTY_VALID = "valid"; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/computable/ComputableData.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/computable/ComputableData.java index 6f878b1..5fc6f1b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/computable/ComputableData.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/computable/ComputableData.java @@ -24,7 +24,8 @@ package fr.ifremer.tutti.ui.swing.util.computable; import fr.ifremer.tutti.util.Numbers; import org.jdesktop.beans.AbstractSerializableBean; -import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; +import org.nuiton.jaxx.application.bean.JavaBeanObject; +import org.nuiton.jaxx.application.bean.JavaBeanObjectPropagateChangeListener; /** @@ -33,7 +34,7 @@ import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; * @author kmorin <kmorin@codelutin.com> * @since 1.0 */ -public class ComputableData<N extends Number> extends AbstractSerializableBean { +public class ComputableData<N extends Number> extends AbstractSerializableBean implements JavaBeanObject { public static final String PROPERTY_DATA = "data"; @@ -82,10 +83,9 @@ public class ComputableData<N extends Number> extends AbstractSerializableBean { @Override public String toString() { String result = null; - if (data != null) { - result = data.toString(); - } else if (computedData != null) { - result = computedData.toString(); + N dataOrComputedData = getDataOrComputedData(); + if (dataOrComputedData != null) { + result = dataOrComputedData.toString(); } return result; } @@ -99,32 +99,14 @@ public class ComputableData<N extends Number> extends AbstractSerializableBean { * @since 1.2 */ public void addPropagateListener(String propertyName, - PropagatePropertyChangeListener.PropagatePropertyChange otherBean) { + JavaBeanObject otherBean) { - PropagatePropertyChangeListener.listenAndPropagate(this, - otherBean, - PROPERTY_DATA, - propertyName); + JavaBeanObjectPropagateChangeListener.listenAndPropagate(this, otherBean, PROPERTY_DATA, propertyName); + } -// PropagatePropertyChangeListener listener = new PropagatePropertyChangeListener(propertyName, otherBean); -// addPropertyChangeListener(PROPERTY_DATA, listener); + @Override + public void firePropertyChanged(String propertyName, Object oldValue, Object newValue) { + super.firePropertyChange(propertyName, oldValue, newValue); } -// private static class PropagateProperyChangeListener implements PropertyChangeListener { -// -// private String propertyName; -// -// private AbstractTuttiBeanUIModel otherBean; -// -// public PropagatePropertyChangeLstener(String propertyName, -// AbstractTuttiBeanUIModel otherBean) { -// this.propertyName = propertyName; -// this.otherBean = otherBean; -// } -// -// @Override -// public void propertyChange(PropertyChangeEvent evt) { -// otherBean.firePropertyChanged(propertyName, evt.getOldValue(), evt.getNewValue()); -// } -// } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit a75474726754d507e28e708db33efa6c148d02c7 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:20 2015 +0100 use new API --- .../catches/marinelitter/MarineLitterBatchUIHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java index d6e833c..b19c1ce 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java @@ -24,15 +24,13 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; -import org.nuiton.jaxx.application.listener.PropagatePropertyChangeListener; -import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; -import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.BatchContainer; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; @@ -51,6 +49,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import org.nuiton.jaxx.application.bean.JavaBeanObjectPropagateChangeListener; +import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.nuiton.validator.NuitonValidatorResult; import javax.swing.JComponent; @@ -214,7 +214,7 @@ public class MarineLitterBatchUIHandler extends AbstractTuttiBatchTableUIHandler ui.setContextValue(model); // propagate when value is changing - PropagatePropertyChangeListener.listenAndPropagate( + JavaBeanObjectPropagateChangeListener.listenAndPropagate( catchesUIModel, model, EditCatchesUIModel.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT, -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 2a4947f9454fd3fe6e818bc88646f127fcca74f4 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Jan 20 13:03:45 2015 +0100 improve code --- .../operation/catches/EditCatchesUIHandler.java | 208 +++++++++++++-------- 1 file changed, 126 insertions(+), 82 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java index 476c3b0..5708064 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java @@ -25,11 +25,8 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches; import com.google.common.collect.Sets; import fr.ifremer.tutti.TuttiConfiguration; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; -import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.util.catches.EnterWeightUI; -import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; -import fr.ifremer.tutti.util.Weights; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyCellComponent; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyUI; @@ -41,12 +38,16 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSp import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import fr.ifremer.tutti.ui.swing.util.catches.EnterWeightUI; +import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; +import fr.ifremer.tutti.util.Weights; import jaxx.runtime.swing.CardLayout2Ext; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.batik.dom.svg.SAXSVGDocumentFactory; import org.apache.batik.dom.svg.SVGOMRectElement; import org.apache.batik.dom.svg.SVGOMTextElement; import org.apache.batik.swing.JSVGCanvas; +import org.apache.batik.util.RunnableQueue; import org.apache.batik.util.XMLResourceDescriptor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,10 +62,15 @@ import org.w3c.dom.events.EventTarget; import org.w3c.dom.svg.SVGRect; import org.w3c.dom.svg.SVGStylable; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; @@ -276,11 +282,12 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi Element labelElement = svgDocument.getElementById(property + "Label"); labelElement.setTextContent(t("tutti.editCatchBatch.field." + property)); + Color colorComputedWeights = getConfig().getColorComputedWeights(); if (computableData == null) { // computed data value - getModel().addPropertyChangeListener(property, new OnComputedDataValueChangedListener(property, weightUnit)); + getModel().addPropertyChangeListener(property, new OnDataOrComputedDataValueChangedListener(property, weightUnit, true, canvas, svgDocument, colorComputedWeights)); } else { // data or computed data value @@ -289,67 +296,11 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi EventTarget target = (EventTarget) element; target.addEventListener("click", new OnValueClickListener(computableData, property, weightUnit), false); - computableData.addPropertyChangeListener(new OnDataOrComputedDataValueChangedListener(property, weightUnit)); + computableData.addPropertyChangeListener(new OnDataOrComputedDataValueChangedListener(property, weightUnit, false, canvas, svgDocument, colorComputedWeights)); } } - public void updateValue(final String id, final Float value, final WeightUnit unit, final boolean computed) { - canvas.getUpdateManager().getUpdateRunnableQueue().invokeLater - (new Runnable() { - public void run() { - if (log.isDebugEnabled()) { - log.debug("update " + id + " field"); - } - - Element element = svgDocument.getElementById(id + "Value"); - if (element == null) { - return; - } - - Element rectElement = svgDocument.getElementById(id + "Rect"); - SVGOMRectElement rectElem = (SVGOMRectElement) rectElement; - SVGRect bbox = rectElem.getBBox(); - Float x = bbox.getX(); - - //TODO i18n ? - String textContent; - if (value != null) { - textContent = Weights.getWeightStringValue(value) + " " + unit.getShortLabel(); - } else { - textContent = null; - } - element.setTextContent(textContent); - - SVGStylable field = (SVGStylable) element; - CSSStyleDeclaration style = field.getStyle(); - - Color colorComputedWeights = getConfig().getColorComputedWeights(); - String computedColor = "#" + Integer.toHexString(colorComputedWeights.getRGB()).substring(2); - style.setProperty("fill", computed ? computedColor : "#000000", null); - style.setProperty("font-style", computed ? "italic" : "normal", null); - - SVGOMTextElement textElem = (SVGOMTextElement) element; - bbox = textElem.getBBox(); - if (bbox != null) { - float width = bbox.getWidth() + 20; - rectElement.setAttribute("width", Float.toString(width)); - element.setAttribute("x", String.valueOf(x + width / 2)); - } - - Element labelElement = svgDocument.getElementById(id + "Label"); - Element labelRectElement = svgDocument.getElementById(id + "LabelRect"); - SVGOMTextElement labelTextElem = (SVGOMTextElement) labelElement; - bbox = labelTextElem.getBBox(); - float width = bbox.getWidth() + 20; - labelRectElement.setAttribute("width", Float.toString(width)); - labelRectElement.setAttribute("x", String.valueOf(x - width)); - labelElement.setAttribute("x", String.valueOf(x - width / 2)); - } - }); - - } - public void closeAttachments() { ui.getCatchesCaracteristicsAttachmentsButton().onCloseUI(); ui.getSpeciesTabContent().getSpeciesBatchAttachmentsButton().onCloseUI(); @@ -388,7 +339,6 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi closeUI(ui.getAccidentalTabContent()); closeUI(ui.getIndividualObservationTabContent()); - canvas.dispose(); } @Override @@ -894,39 +844,133 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi } } - private class OnDataOrComputedDataValueChangedListener implements PropertyChangeListener { + private static class OnDataOrComputedDataValueChangedListener implements PropertyChangeListener { private final String property; private final WeightUnit weightUnit; - public OnDataOrComputedDataValueChangedListener(String property, WeightUnit weightUnit) { + private final boolean onlyReactOnComputedData; + + private final JSVGCanvas canvas; + + private RunnableQueue updateRunnableQueue; + + private final Document svgDocument; + + private final Color colorComputedWeights; + + public OnDataOrComputedDataValueChangedListener(String property, + WeightUnit weightUnit, + boolean onlyReactOnComputedData, + JSVGCanvas canvas, + Document svgDocument, + Color colorComputedWeights) { this.property = property; this.weightUnit = weightUnit; + this.onlyReactOnComputedData = onlyReactOnComputedData; + this.canvas = canvas; + this.svgDocument = svgDocument; + this.colorComputedWeights = colorComputedWeights; + + } + + public RunnableQueue getUpdateRunnableQueue() { + if (updateRunnableQueue == null) { + updateRunnableQueue = canvas.getUpdateManager().getUpdateRunnableQueue(); + + } + return updateRunnableQueue; } @Override public void propertyChange(PropertyChangeEvent evt) { - ComputableData<Float> computableData = (ComputableData<Float>) evt.getSource(); - Float newValue = computableData.getDataOrComputedData(); - updateValue(property, newValue, weightUnit, false); - } - } - private class OnComputedDataValueChangedListener implements PropertyChangeListener { - private final String property; + boolean computedData; - private final WeightUnit weightUnit; + Float newValue; + + if (onlyReactOnComputedData) { + + computedData = true; + newValue = (Float) evt.getNewValue(); + + } else { + + ComputableData<Float> computableData = (ComputableData<Float>) evt.getSource(); + + if (computableData.getData() == null) { + + computedData = true; + newValue = computableData.getComputedData(); + + } else { + + computedData = false; + newValue = computableData.getData(); + + } + + } + updateValue(property, newValue, weightUnit, computedData); - public OnComputedDataValueChangedListener(String property, WeightUnit weightUnit) { - this.property = property; - this.weightUnit = weightUnit; } - @Override - public void propertyChange(PropertyChangeEvent evt) { - Float data = (Float) evt.getNewValue(); - updateValue(property, data, weightUnit, true); + protected void updateValue(final String id, final Float value, final WeightUnit unit, final boolean computed) { + + getUpdateRunnableQueue().invokeLater + (new Runnable() { + public void run() { + if (log.isDebugEnabled()) { + log.debug("update " + id + " field"); + } + + Element element = svgDocument.getElementById(id + "Value"); + if (element == null) { + return; + } + + Element rectElement = svgDocument.getElementById(id + "Rect"); + SVGOMRectElement rectElem = (SVGOMRectElement) rectElement; + SVGRect bbox = rectElem.getBBox(); + Float x = bbox.getX(); + + //TODO i18n ? + String textContent; + if (value != null) { + textContent = Weights.getWeightStringValue(value) + " " + unit.getShortLabel(); + } else { + textContent = null; + } + element.setTextContent(textContent); + + SVGStylable field = (SVGStylable) element; + CSSStyleDeclaration style = field.getStyle(); + + String computedColor = "#" + Integer.toHexString(colorComputedWeights.getRGB()).substring(2); + style.setProperty("fill", computed ? computedColor : "#000000", null); + style.setProperty("font-style", computed ? "italic" : "normal", null); + + SVGOMTextElement textElem = (SVGOMTextElement) element; + bbox = textElem.getBBox(); + if (bbox != null) { + float width = bbox.getWidth() + 20; + rectElement.setAttribute("width", Float.toString(width)); + element.setAttribute("x", String.valueOf(x + width / 2)); + } + + Element labelElement = svgDocument.getElementById(id + "Label"); + Element labelRectElement = svgDocument.getElementById(id + "LabelRect"); + SVGOMTextElement labelTextElem = (SVGOMTextElement) labelElement; + bbox = labelTextElem.getBBox(); + float width = bbox.getWidth() + 20; + labelRectElement.setAttribute("width", Float.toString(width)); + labelRectElement.setAttribute("x", String.valueOf(x - width)); + labelElement.setAttribute("x", String.valueOf(x - width / 2)); + } + }); + } } + } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm