Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows builder crash when deleting a sub panel component #916

Open
faurad opened this issue Oct 6, 2024 · 4 comments
Open

Windows builder crash when deleting a sub panel component #916

faurad opened this issue Oct 6, 2024 · 4 comments
Labels
question Further information is requested

Comments

@faurad
Copy link

faurad commented Oct 6, 2024

Stack trace:
java.lang.IndexOutOfBoundsException: Index: 1, Length: 0
at org.apache.commons.lang3.ArrayUtils.remove(ArrayUtils.java:4903)
at org.apache.commons.lang3.ArrayUtils.remove(ArrayUtils.java:4978)
at org.eclipse.wb.internal.core.utils.ast.binding.DesignerMethodBinding.removeParameterType(DesignerMethodBinding.java:93)
at org.eclipse.wb.internal.core.utils.ast.AstEditor.removeInvocationArgument(AstEditor.java:3184)
at org.eclipse.wb.internal.core.utils.ast.AstEditor.removeInvocationArgument(AstEditor.java:3146)
at org.eclipse.wb.internal.swing.model.layout.LayoutInfo.removeComponentConstraints(LayoutInfo.java:309)
at org.eclipse.wb.internal.swing.model.layout.LayoutInfo$1.before(LayoutInfo.java:103)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.wb.core.model.broadcast.BroadcastSupport.lambda$0(BroadcastSupport.java:207)
at org.eclipse.wb.core.model.broadcast.ObjectInfoDelete$ByteBuddy$aIdZW53M.before(Unknown Source)
at org.eclipse.wb.core.model.JavaInfo$5.run(JavaInfo.java:803)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.model.JavaInfo.delete(JavaInfo.java:796)
at org.eclipse.wb.core.model.AbstractComponentInfo.delete(AbstractComponentInfo.java:226)
at org.eclipse.wb.internal.core.editor.actions.DeleteAction$2.executeEdit(DeleteAction.java:123)
at org.eclipse.wb.core.gef.command.EditCommand.lambda$0(EditCommand.java:50)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.gef.command.EditCommand.execute(EditCommand.java:50)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
at org.eclipse.gef.commands.CompoundCommand.execute(CompoundCommand.java:138)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.access$0(CompoundEditCommand.java:1)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.lambda$0(CompoundEditCommand.java:45)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.execute(CompoundEditCommand.java:45)
at org.eclipse.wb.internal.gef.core.EditDomain.executeCommand(EditDomain.java:50)
at org.eclipse.wb.internal.core.editor.actions.DeleteAction.run(DeleteAction.java:64)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:581)
at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:415)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4326)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1174)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4124)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3712)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)

Full context stack trace:
java.lang.IndexOutOfBoundsException: Index: 1, Length: 0
at org.apache.commons.lang3.ArrayUtils.remove(ArrayUtils.java:4903)
at org.apache.commons.lang3.ArrayUtils.remove(ArrayUtils.java:4978)
at org.eclipse.wb.internal.core.utils.ast.binding.DesignerMethodBinding.removeParameterType(DesignerMethodBinding.java:93)
at org.eclipse.wb.internal.core.utils.ast.AstEditor.removeInvocationArgument(AstEditor.java:3184)
at org.eclipse.wb.internal.core.utils.ast.AstEditor.removeInvocationArgument(AstEditor.java:3146)
at org.eclipse.wb.internal.swing.model.layout.LayoutInfo.removeComponentConstraints(LayoutInfo.java:309)
at org.eclipse.wb.internal.swing.model.layout.LayoutInfo$1.before(LayoutInfo.java:103)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.wb.core.model.broadcast.BroadcastSupport.lambda$0(BroadcastSupport.java:207)
at org.eclipse.wb.core.model.broadcast.ObjectInfoDelete$ByteBuddy$aIdZW53M.before(Unknown Source)
at org.eclipse.wb.core.model.JavaInfo$5.run(JavaInfo.java:803)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.model.JavaInfo.delete(JavaInfo.java:796)
at org.eclipse.wb.core.model.AbstractComponentInfo.delete(AbstractComponentInfo.java:226)
at org.eclipse.wb.internal.core.editor.actions.DeleteAction$2.executeEdit(DeleteAction.java:123)
at org.eclipse.wb.core.gef.command.EditCommand.lambda$0(EditCommand.java:50)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.gef.command.EditCommand.execute(EditCommand.java:50)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
at org.eclipse.gef.commands.CompoundCommand.execute(CompoundCommand.java:138)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.access$0(CompoundEditCommand.java:1)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.lambda$0(CompoundEditCommand.java:45)
at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.run(ExecutionUtils.java:328)
at org.eclipse.wb.core.gef.command.CompoundEditCommand.execute(CompoundEditCommand.java:45)
at org.eclipse.wb.internal.gef.core.EditDomain.executeCommand(EditDomain.java:50)
at org.eclipse.wb.internal.core.editor.actions.DeleteAction.run(DeleteAction.java:64)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:581)
at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:415)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4326)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1174)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4124)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3712)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
at org.eclipse.equinox.launcher.Main.run(Main.java:1481)

@faurad
Copy link
Author

faurad commented Oct 6, 2024

here is the source file:

package com.ptracker.ui.frames.menu.fert;

import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Frame;
import java.io.File;
import java.sql.SQLException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.AbstractAction;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultTreeSelectionModel;
import javax.swing.tree.TreeModel;

import com.objectview.frame.ui.ButtonObjectCellEditorAndRenderer;
import com.objectview.frame.ui.OVPanel;
import com.objectview.frame.ui.OVSwingUtilities;
import com.objectview.frame.ui.OVTreeModel;
import com.objectview.frame.ui.OVTreeNode;
import com.objectview.frame.ui.OVWindowInterface;
import com.objectview.frame.ui.ObjectCellEditor;
import com.objectview.frame.ui.ObjectCellRenderer;
import com.objectview.frame.ui.ObjectColumnConfiguration;
import com.objectview.frame.ui.ObjectComboModel;
import com.objectview.frame.ui.ObjectComboModelExtended;
import com.objectview.frame.ui.ObjectTableModel;
import com.objectview.frame.ui.ObjectTreeNodeWrapper;
import com.objectview.frame.ui.PersistentObjectEditTableModel;
import com.objectview.frame.ui.StringFormatterCellEditor;
import com.objectview.jdb.JDBSession;
import com.objectview.jdb.JDBSystem;
import com.objectview.jdb.RollbackException;
import com.objectview.util.Callback;
import com.objectview.util.CallbackEnchain;
import com.objectview.util.CallbackList;
import com.objectview.util.GetterWrapper;
import com.objectview.util.ObjectAccessException;
import com.objectview.util.ObjectPoolException;
import com.ptracker.backend.service.FileSystemService;
import com.ptracker.backend.service.GenericObjectEditorConfigurations;
import com.ptracker.backend.service.JdbcService;
import com.ptracker.backend.service.UiErrorHandlerService;
import com.ptracker.domain.AppUser;
import com.ptracker.domain.Company;
import com.ptracker.domain.FarmAccountingYear;
import com.ptracker.domain.FertilizationRecipe;
import com.ptracker.domain.Fertilizer;
import com.ptracker.domain.FertilizerRecipeDetail;
import com.ptracker.domain.FertilizerStock;
import com.ptracker.domain.FertilizerTargetUnits;
import com.ptracker.domain.HarvestClientOrder;
import com.ptracker.domain.PlantationSector;
import com.ptracker.domain.SectorDtlFertRecipeDtl;
import com.ptracker.domain.SystemSettingValue;
import com.ptracker.system.PtrackerSystem;
import com.ptracker.ui.frames.generic.GenericObjectEditorPanel;
import com.ptracker.ui.frames.generic.GenericObjectSelectorModalFrame;
import com.ptracker.ui.frames.generic.GenericPopUpFrame;
import com.ptracker.ui.frames.generic.ObjectTreeNodeCellRenderer;
import com.ptracker.ui.frames.menu.stocks.ContainerStockPanel;

/**

  • Insert the type's description here.

  • Creation date: (12/31/2020 2:10:04 PM)

  • @author: Adrian Faur
    /
    public class ChemicalSampleTypePanel extends com.ptracker.ui.frames.generic.GenericApplicationPanel implements java.awt.event.ActionListener, java.awt.event.KeyListener, java.awt.event.MouseListener, java.beans.PropertyChangeListener, javax.swing.event.TreeSelectionListener {
    private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(ChemicalSampleTypePanel.class);
    private boolean ivjConnPtoP1Aligning = false;
    private javax.swing.JPanel ivjJPanel2 = null;
    private javax.swing.JPanel ivjJPanel3 = null;
    private javax.swing.JPanel ivjJPanel4 = null;
    private javax.swing.JPanel ivjJPanel5 = null;
    private javax.swing.JPanel ivjJPanel6 = null;
    private javax.swing.JScrollPane ivjJScrollPane1 = null;
    private javax.swing.JTabbedPane ivjJTabbedPane1 = null;
    // currently selected node
    protected YearFertRecipeTreeNodeWrapper yearFertRecipeTreeNodeWrapper = null;
    // main object behind tree node
    protected FertilizationRecipe fertilizationRecipe = null;
    protected FarmAccountingYear farmAccountingYear = null;
    // potOpen Callback
    protected Callback postOpenCallback = null;
    private javax.swing.JCheckBox ivjCBexpand = null;
    private javax.swing.JTree ivjTRlist = null;
    private javax.swing.tree.TreeSelectionModel ivjselectionModelTRlist = null;
    private javax.swing.JTextField ivjTFtreeSearch = null;
    private javax.swing.JLabel ivjLBsearch = null;
    private javax.swing.JSplitPane ivjJSplitTreePane = null;
    private javax.swing.JPanel ivjJPtreePanel = null;
    private javax.swing.JPanel ivjJPanel8 = null;
    private javax.swing.JLabel ivjJLTitle = null;
    private javax.swing.JPanel ivjJPfertilizationRecipe = null;
    private javax.swing.JPanel ivjJPfertilizerRecipeDetail = null;
    private javax.swing.JPanel ivjJPrecipeApplications = null;
    private javax.swing.JButton ivjPBrecipeFileView = null;
    private javax.swing.JLabel ivjJLabel1 = null;
    private javax.swing.JPanel ivjJPanel1 = null;
    private javax.swing.JButton ivjPBRecipeTargetSectorPanel = null;
    private javax.swing.JTextField ivjTFpercent = null;
    /
    *

  • ClientOrderPanel constructor comment.
    /
    public ChemicalSampleTypePanel() {
    super();
    initialize();
    }
    /
    *

  • ClientOrderPanel constructor comment.

  • @param layout java.awt.LayoutManager
    /
    public ChemicalSampleTypePanel(java.awt.LayoutManager layout) {
    super(layout);
    }
    /
    *

  • ClientOrderPanel constructor comment.

  • @param layout java.awt.LayoutManager

  • @param isDoubleBuffered boolean
    /
    public ChemicalSampleTypePanel(java.awt.LayoutManager layout, boolean isDoubleBuffered) {
    super(layout, isDoubleBuffered);
    }
    /
    *

  • ClientOrderPanel constructor comment.

  • @param isDoubleBuffered boolean
    /
    public ChemicalSampleTypePanel(boolean isDoubleBuffered) {
    super(isDoubleBuffered);
    }
    /
    *

  • Method to handle events for the ActionListener interface.

  • @param e java.awt.event.ActionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void actionPerformed(java.awt.event.ActionEvent e) {
    // user code begin {1}
    // user code end
    if (e.getSource() == getCBexpand())
    connEtoC5(e);
    if (e.getSource() == getPBrecipeFileView())
    connEtoC4(e);
    if (e.getSource() == getPBRecipeTargetSectorPanel())
    connEtoC6(e);
    // user code begin {2}
    // user code end
    }
    /
    *

  • connEtoC1: (selectionModelTRcompanies.treeSelection.valueChanged(javax.swing.event.TreeSelectionEvent) --> ClientOrderPanel.xSelectionModelTRcompanies_ValueChanged(Ljavax.swing.event.TreeSelectionEvent;)V)

  • @param arg1 javax.swing.event.TreeSelectionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC1(javax.swing.event.TreeSelectionEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xSelectionModelTRlist_ValueChanged(arg1);
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connEtoC2: (TFcompanySearch.key.keyTyped(java.awt.event.KeyEvent) --> ClientOrderPanel.xTFcompanySearch_KeyTyped(Ljava.awt.event.KeyEvent;)V)

  • @param arg1 java.awt.event.KeyEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC2(java.awt.event.KeyEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xTFtreeSearch_KeyTyped(arg1);
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connEtoC3: (TFtreeSearch.mouse.mouseClicked(java.awt.event.MouseEvent) --> ClientOrderPanel.xTFtreeSearch_MouseClicked()V)

  • @param arg1 java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC3(java.awt.event.MouseEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xTFtreeSearch_MouseClicked();
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connEtoC4: (PBrecipeFileView.action.actionPerformed(java.awt.event.ActionEvent) --> ChemicalSampleTypePanel.xPBrecipeFileView_ActionPerformed()V)

  • @param arg1 java.awt.event.ActionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC4(java.awt.event.ActionEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xPBrecipeFileView_ActionPerformed();
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connEtoC5: (CBexpand.action.actionPerformed(java.awt.event.ActionEvent) --> ClientOrderPanel.xCBexpand_ActionPerformed(Ljava.awt.event.ActionEvent;)V)

  • @param arg1 java.awt.event.ActionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC5(java.awt.event.ActionEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xCBexpand_ActionPerformed();
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connEtoC6: (PBRecipeTargetSectorPanel.action.actionPerformed(java.awt.event.ActionEvent) --> ChemicalSampleTypePanel.xPBRecipeTargetSectorPanel_ActionPerformed()V)

  • @param arg1 java.awt.event.ActionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connEtoC6(java.awt.event.ActionEvent arg1) {
    try {
    // user code begin {1}
    // user code end
    this.xPBRecipeTargetSectorPanel_ActionPerformed();
    // user code begin {2}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connPtoP1SetSource: (TRCompanies.selectionModel <--> selectionModelTRcompanies.this)
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connPtoP1SetSource() {
    /
    Set the source from the target /
    try {
    if (ivjConnPtoP1Aligning == false) {
    // user code begin {1}
    // user code end
    ivjConnPtoP1Aligning = true;
    if ((getselectionModelTRlist() != null)) {
    getTRlist().setSelectionModel(getselectionModelTRlist());
    }
    // user code begin {2}
    // user code end
    ivjConnPtoP1Aligning = false;
    }
    } catch (java.lang.Throwable ivjExc) {
    ivjConnPtoP1Aligning = false;
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • connPtoP1SetTarget: (TRCompanies.selectionModel <--> selectionModelTRcompanies.this)
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void connPtoP1SetTarget() {
    /
    Set the target from the source /
    try {
    if (ivjConnPtoP1Aligning == false) {
    // user code begin {1}
    // user code end
    ivjConnPtoP1Aligning = true;
    setselectionModelTRlist(getTRlist().getSelectionModel());
    // user code begin {2}
    // user code end
    ivjConnPtoP1Aligning = false;
    }
    } catch (java.lang.Throwable ivjExc) {
    ivjConnPtoP1Aligning = false;
    // user code begin {3}
    // user code end
    handleException(ivjExc);
    }
    }
    /
    *

  • Description : Get the current attribute value entered on object editor for the attribute name specified here

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (1/6/2021 6:44:30 PM)

  • @return java.lang.Object

  • @param attributeName java.lang.String
    */
    public Object getAttributeValueFromScreenData(GenericObjectEditorPanel genericObjectEditorPanel, String attributeName) {

    return genericObjectEditorPanel.getAttributeValueFromScreenData( attributeName);
    }
    /**

/
/
WARNING: THIS METHOD WILL BE REGENERATED. */
private static void getBuilderData() {
/*V1.1
start of data
D0CB838494G88G88GB9CEF2D6GGGGGGGGGGGG8CGGGE2F5E9ECE4E5F2A0E4E1F4E165FDFFDC55557DBF15B5365946B65A2C7CEC3428EC79D934D93365B656E83966B6AAD7EC31CFD4D6D4D6345CE20B66DB81C5C1C5C125243AAAA6A872DBA5C465370028D74042C265F26F9B38F93977FA6F9B38A06977F54EF93F4EFD5FFB5F7742C558BFDF9E3EFC5F73BC67F54E6B3C4E6B7CFC1FF35EC26607A1494B16E78A4232E4C17E5B3FCC9012DE93045D4DADBFC1CC7383FD2A20785B8A34DEF8
E2DF92BC0B402FE53AA1B5DD784E5194F05701BB64BAC36AE6781DA1F4B834AF428FAF6964025F0A6B0B9E711D4E7089CCE7A5F5A758536039962891B09350DC20F4A1D34A1271A0F02F15FF93DA36DC903AC2C8987346AC851EA007AB833FC6A06DADA4CC2114AD7B4F82AC9CA88DF04DADACECB9BCD7D1692E2DA81743F5FEABD4D872486A24B5A4ADC57CC8B3E45EF972D3A3FCBB11A8A2D138591A8F4FCA6D795EC3FACBFF01D532697467C5DB4100312047266B976D855DE2C5C52D255F2AB38FEBF5E65114
7FC3A263CD1A944AAF88CBA04E39945B301568458A3F8301C2FE08F2BE3A26D216A378FC2890F36BBB095E64CC7821AC5F2DCEB9634366A4C75ECA626F1052E43EAEF04FGE2F9889EBDBCC69E7AC573C0C10FE813AAAA9A60FF2349B822130C96F32B28B7DAC51AAD0165ABC442FCE506E23E7E3806245B82EE8350A847AB5791BC985C3301A2C2B13F87F7E2FEBBAE7ED4086F5E13344ECBFE23C3D9BE13EEF366B7780D5064F7291DA51FA436D285FE86A08750CC20F9C051C0DB28FD071F58854F6AEE890A28
5FE22E36DAEBCC865BB10BC1B4416F0A8A7011B1482B45E69084E643BF50642B48033464B6D77BA54472762900B6B73B75C702A4EDCFCAD6495B1CBF27A5255C4E62483E5D19372ABB085EF665903DD582CE783EA4F92478850ACF3B430933F24F22F6C55C0133742952EC54F347DA1425A5697BC2FAF1E152CA95D9E6BC1813549546E4F004B9E5E1BAFE3A1568B89470F020A820B82074FB7429C577200ED7EBCB4752F113D992EDE61D29ED205B2A33C9B583C613C134493ABEAB7952359AB1BE135FFCCCAF33
CA15E5947D5382D53DC44F4AC8EA39076943F00FD3AFAC6D5B3C26BD6D9ECF5BD84B4B30E6ADA92B997730B2CC6678B10A4FD6602CEC97523AC55C6160177393FDAA8B9FCE6BD660CFD878F5BC1EC80A07A9F096CF8D4509BB8A7C5AFF2ACFE5653B2F0A34251160DE8C14B4C71F1A8DD4895481E41A03E5FCCADBB84EFA24D514AF63DDFBF293BCC58734BBCDE63B24B36B45CFF4B6232E5BA45A85B94C6613C42F5DAEFC5934FE6BA10DA322D934519689E207968B0C494E426CB8391E04310954375D882D1924
6B378A986F1E139970B4696C52A92BC1A7094E904CFF6FC9E293033ACFA0C608GFE4F1BC374F59FED3F27436FD9F3D0D77AEA0289776AD3336EC53D041D5CG4F23E05C222922224E28A7E268EC43E823C5B971704C0770D620F0206977817F4F7429E1C00DF37529B1C0336F5727167F9CB0204A87200F1D87FD84D04EAF201FG4A7EA534EDC0DD3F522746829942219E82D9FF8DCFA069C1A83B5FC0F820BE202288E88701AA9F827C377A54A0207407618954B1DF1F3A88286BF750CE8205BE8261FF8FE983
95AD00F69AE87A9FC046BF6AD30301527F84FD89D0D6A4488224F994F482D474983473C00D0FC3BCC0339702ED7ED91FBA9FC87B8448798436C32FF5E0FD2BDBF327107F67BD2A750D0E8B1EE4F5E756136E75ED086AB19270B82074A8C89FC88BE4858A828A830A840A83CA7F8B7883E9012CC0C1C0E1C011C0F1C069FF85FFA0AD1095A888A88CA892A88EA87DA970875282D90102004200A20162005223419FC88BE4858A828A830A840A83CA7F9B7883E9012CC0C1C0E1C011C0F1C0697F877EC0DAA0ABD090
D098D0A4D09CD07A53608F248532BE0D632A8F3646A42A37B924EC4913142337360F14B77EA6E5C57B1EDFFA8FBFDEA2F6C753FE0CBD09BD93DB9EAFBF3167B09FF2A3919BA7CFD2BF90A3B6FAA532137AC66A8B29C76389CF6AA931EFF413FAC86A860F6FE74E5F24FEAAF9C99BC06A0E3738C95DD33AC95B60ADEC301CEFD2F7F9797E4A791B349F5CB67EB4FE9D11F64117BFE90FE899BC441E24CDA3CF525628051FA567B764972E7E249DF18FCB5AC5721CAB5B91E9375C4310F60534F1C1AAFEC824ADA2ED
67CC05EDC7ABEC1F3417D9F27A918BFC67B768E1D77FF0B93F24FDA4CF525EF5A8F4D66426072C1F790E1F3411247DD4E22C2E3F3B4DDBDD2F171FEDBE62BD2678BDA0BF370F5386FC51DE7959AFBFC95F3B518F7EBC20D36388D7AABF5FD5E0E72ED0F6B25F7D9828F01C614938E1D8615E8D24D73857A8FE6FF163A573A3230F38BFF5F32F7391761C7CBC2940F6AAFEEFD17C5679210F23E378FFA8BF8F4B4FE479F950CB787372F32B9B5E2B92F6157C34484FEA15B097017683557A1091060F427BC0BB9458
89456FE2A0D17EFDFA0C7C9EF1F32F141F1F4B4FA120A6057F81377029E344CF66E7975CB0B62EFC34060C4D03201F1F8D3460E99CDB3EF2D2A350B1F70D4EAE62A87B048D86482241B952E4E1E3DB098D090322D92A932D2259GBF6C72987775D622EFF97C5DE391F0EC7C8F0A1379D8AD8C106D9CFF3BF5BD43A18E65E89E7D935B083FCE12EC466E81C9EC93A549E86EF572273691D96CAED3BD3B1C5747EBC9DE97C19E930052E2B02F41ED243E61B83A45E2B9BFE0EDA7B384F9BCBE0F2EBBE8A0FCF98C0E
079A57922C935C819CEB2398899342313F2E69F053BB6199EFBD71C681F29CAC0DB7BD52C83C427815F50E25715BF5E42E36CC0EBBD936B9D206C45FEBF838A7E838F010AF96A87D995099D097D0A0D058B3DCFF6B2CEE71E15DCC15637355AECD14D85A3DB4EDCC976B1AFBFEA6BBEDE6EBD5D55E6B4A11AA753AF22CCA3D2E34D5792E8B1FD72955856657DDC572EE99B2AB6AD6EF9519CF6AADE633C8ABB8E79158DA5EEB6DA49FC633D17A54E8689525B66388E9601EA5F5648FF44E9A85653B78991CFB8DED
4739D74E48EDC278399455752899376DCC2AFB1659F347334E399713292F1A54D951A4760322EAAD83E60961E6BA9F16F1FBA2450A8E1074B4396D2DECCD54A85A736D9004E606AE97E8AA776CB924F1450A7325BE23BD2F0845217F32E682F134376AF9E8969B332F8CE1F1DEB80D4FC7F81B88C5A77B968C6ACC83E2ED1F4E5CAB9AF23F508D6A9C8576A1A85582EAB2856D4A4075844A5390F1DC96019DED5E92BB7709B27A167144FFA06F133CE21617DFDF8CE03AE9E0918E3709BA1B3EAF7F3CB8DCG54BE
EC15E5AE508DC9F204C745E12FE23A45F36EA8465162A592A2CB8913256B625729AC35C7EB74A6A378656B188259C3AB5AFAAC36FECFF92AFDEB0EC7F72E5AAD9EF7192ADDD5D4AA1777F75239DC60E53058A6CDAE961D3FF21549F28D3E77D5A6D70D6800F88D13A4169C1B3FD26D9530FE4CDA762B7FC67DG496CE481EFEA2A071C9753214BD7D8BFDC441CD87510E599C8B2CDCAF93BC8643538C91132F42FB5FDA96B40CAB92FD4854AD8462B81342D7E6CFBD5ED4BE434CB7F8533A249CC5822B08FBD7B06
E5FDB2012FCC1B4EB87C5565EF0602289C5A9A23215EE1B5D9EC62041BB6972114917A5D38B1596E5A5F4FE5EB538D0A13A69709CC4D560B1D6D5781494A532E03F214A6AFF5961DDA7A7BD85A7F78D212536E3534DB9AF460BDD9E5620CD0AD7D7DAC7D9F3D7733A92EDF3583A649B82833CDC58DE3F9D8DAF971CA6A171B009329E1CC0E2FDFB2CFCE7F6CAA104F969BED784C2E4B8ABB525AAC06819AFA12E4F00FD635C6154B321C96EC8AD91AAD5D76C91502C428167E47280B5B77CAFCDCA9C7B0D9C5610C
51C71D3EDA6340740DB61B31D7B709856192270FFA3D257B6AC93587D03A5624B31B21CE7AE792F219982C19E49E2BD279197FD595B86F23AD4FF826EB2C09D24C7B8EED7E799437E51EDA185C81834B470543172E24BD7394F2C20386A6CB727E8B135226F98AB5C633A627FF78743CA9AE53D64BD0355DEE6CB57753654AC9AFD5160FA70F87DCC9192A89B901D2E5324C795CBEA9E52AA6146FD2E569672559BDF551EF99300B85747FDA13D1FF5EB37DE3444F9F1D9CD3C62618C7DF2739FF6A5B0936017EFE
1D4D5BEA4E244CAB5657FDF9056D042B10D7B237782ABC061E04F642D528F14CD7271F37CE06BD79560707B14936E4FAE00AED29D1E79B946DD21BE4511F1F3AB174FD17AEDF09AD2988B971F1743A8336C931A5952146B5167E135EB69976B416CEBC1BA7B97DE75F3DD69E3B11452381C9A416C9E219C4C5F844BD469CB9ED5FD4371935F44D36CDE79227324D34CBD754E6FA88F9A5EDE656686434199EC20D234D2C5BBDA9ED26EFFDF8E9B39FFAF7D436EFA8D76320E89BBEEE19781A0B07882E517A1827F5
6660BC7538517609D19C1AC491649855D267F3229F58C6F05D49BCE8B16A45C916C1912B4F79F2077602AC0759E82BB3CEFC326CA9820BD035EDA9627560313CE1D7BDCC2E8C4EC8D565F0368D3A4D97E5B96C405F4458A6D190C52CEA1214E0DF1CDDB46CAC0F49974399292ABE1C6DD3F447D59EF2CC32093AC62CAACFA917674926EBD55A0DC91648BDEAD5194A38CC41BD8FCEF13F686DC04D542CBDEC53DFF7A57D23F7E12FE08D62339D431352CFFA97EEFCEB9127FAD55E63785FE70ED3C7AA43C3D90E99
8DDF156B010DF2B798CDD7D48B3C8B641E026A02A3174B51F333AC970B24DDE7A3BBCC4054AC727265948868A5A955EEDF5EC336221E6CC7F1BC2BCF1D8E947AAC6EA1FB391A78639EB2F923DC2D45A4D796700B277BE41E4FA1EB193877E55E336C0C62DA6E3FFE07EF7F03AE7ED54FB17F6970E47E3FD4758F617E07BFD2731F437D43D57D67F37F6A1DEA7E515C7FC1D57FB86EDF1B2B661F34887DA3D47D3338FFFD1E1AFFBE777F2D2AFF9577BF32CB4D3F1D7B4FD7756F637ECD3B557CC7397FA32A7EC15C
7FE83E1AFFA877DF206ABF177B9F5B23663F007B7FD155BF067B1FA8D073DF427DA3D57DD31EC77F1305EA7E595C7FB1D57FA26E5FD62466DF477D973A78F7BC4F7C83397F2B7BFC570FF7772B45BF13735F246A9F467D37142B79C7F07F192A7ED15C7F7D0F557C97F37F6F2B7A8BAF207F0795EA7E4E7C9D9D43FFE88C7FDB47707F53987EEF0F613F73001AFFA64F5FACD57FDC6E1FD72966DF497DFF246A2F657E3B8F2A799B387FECD5FF87775FF3C835FD657EBFD6758F617E0507D55BD76E9F266ABF1F7B
97D729362F5C7FA72A7EF15C3F34DA35FDFD917D67287AE7F17F3DB52A6DAB773FCF553F0A7B6F2FD5EDDF397FDCD57FBE6E7FF11DEA7B4A7DFF2E6A9F447D8F542B362F5CFF1E2A7FDC6EFF30C135FDFD917B79A7EB528572AE724200E8560BE413B88CBB6573207FD733414D0F8E2879B95397EA489EE313E2FFB9437FD22B3E477569DAF23741F99E7FF335AB84F2DE14454976640669C81CD61B112DBD5BA479AE0347A565DD86B1A0BF3977A0B7966A9210BCD7DCC942F89BA00D756EF5B41624733D35282F
F6F01BE2D9BA441D7B9271DF130E77A5C400DFB4D0C2AC5B9F1F857E9FGDE74B28977A48FA73D447C273F44620AFAC9BE63C743FDFFBD069B85F7B0501C17D938581715614EED40F0392F00FD82F53D4242053C228C37BD83434DFF054597A3074BDE2C8C77828F5788F897D040E296AE5CA55C0FB2B1DC9C60A92F024EDFE5617ADE154F4D3DCA42AD62F7B414F26CED0ABD35DA906ED80967450F25AB6F11B058B52AFB2889454A71A73C6AFE0E7EC08309B77BB528472F219D1F29D31EF928365BADFAA335G
59A6536A157B2B99363E9EC493FA0CB63B54E4B6088EFEFE3A1E48CA4EB94B30EC1B179D850267396DFA0391865AF82424F628166FB7A733844C77178D4AFBA9662D5B18146AA55FD52F317CF63D664CF7649B2149CC063BF69F9C078CF43E50EE29856BEE046A69AE12FC7F0434834BAC046812E27F60D8944786BFC2AC7DF5445E62D8A3479CBB918B60583FB8B617E3A3390845F16CED0E6546A1B61A07D897475E61588C0EDD5A05D8A44716F2AC658D4482F6A3D64531E57908B9B8F6B54742B816388731D8
0ECD6318666F08A597A05641316BB89644311505084D67D8A04704B791DBD504D8B9473E46B16B1BF8AF49CB1B360DE997CDFAB2F1E3F1249613B808ED4E6271EA77E33CB19CFB14E3D9CB90EBADC7CC4B3147B9964831760F918B67581FB9964F31338790AB7A87E2CFF32C0FE3DD155CDEB9768C4722B856FD105B6BBF91FB0EE30D9CB39C62764A3167B9B617E3BD07393DF26CC50E653E05D8DF9537D70E3D4431999C7B221A5BAB47DE61D8CABCE2269AEE2F9CFB15E38E0E19EB393DF26CF50E45F24CDA47
6D75DF083D41318E0E596A393DF26CCD0E4D671854406D755FE807D155241D73F5BFCEAF39FF42282F28B842FE00F51A0CFA79C28AFE674F418192B709337C5FF8870E6420F77E00BB90A884085D4771CBFA5F87ADB3406200F25F26ED4ADAB25EA07DB3EB0375255886870D5CA2F45DD062358DB63DAD1FCDFE5B5986075CF72FFCB7503EF4CCAF827C935E4631569DAEF36D3284FDEA8750E8820ECF562FA3386B5883570BFE1DCEE4A5BB38182CFF2F2E1263D970636F8BF3D766285E6B53F7C7D1D2D002FC56
BB41A92B703D6A2476A771AEA3E1BD5EFB12728E0C9D5EC1F9FA5713B42EF4E11615FBE58FB983BB094B30F23F79438C259EAAAF7FB3D1CD8F016B04A447BB727978F71CFAC8DABAA7B9EBA96A61E12E074590A667BFD8EECF1FD116DBA7605300E67D8775D430011C099D57422F00E3054282726E407F15DE3CE3A6F0834ABA8F64D842E5DDD52214B5FFA91335FDA94A7A7A86122E7FEB0BA8370E5E8766EB9118495712017275C15AA1BC7D1FE610735BFEAD84F31DF5B53E6F21B33715DF817533AE93530FDA
CA5BF2D9BFAFE7A87553883895A898C8BEB714F9E57A69EB4FA1B20EE3B1184979B817F396489043658C7510B3EB19A135F2994AD931714A6434956CE1F20EFFCDD86077EE15A8476861B119DE4768DA1017BC8D7253B9C6FF2011345F8100878331F175376B4979CE9C2303E092B489A6F264D2BECB5A10486A196C2EEBA0695296C940735D71CDC4EF33A04E8820E820A5C0194BB10D5FB70CF9FFD63D43477DD943BB7C39872B8C52E5FC7F760B2F1173DD7C489F3ECE4E1760971F1573FD39539F3EE91C6FBF
FE714D60FC17F37D611B4D7904BCFF7842B95FD5FE71AD64FC4BF77943974B792E710BAF0173A56D7607AFBD91792E750BAF07732D4877072F1C73FD45AF3E964E1732479F3EAE4E77D53F78A44E373A409F3EC04E77F53F78E6F23E34C2FF7842B85F75FE71C5F03E35C57E70C5F13EEF7A4537187325973B7389C986FE4FC32662F7AE7C2ECCC23ED37B7DC9CF4B791E700B4F4079BEAD77074F4179227C621B4E79CEFF6C8FDF88677B2BDFFCF3B81F7E00BFFC73B95FA23F7822B91FD8698FDF9C67FB41AF3E
24E4646BBD688FDF96670B750BAF1F73998F7943D74579DE760B2F1D731DBF6C8FDF9F67DB6C975FA8676B2F7207AF08733D6697DFA86733D47B43B71773457945370073DD287107AF06737D5DAF3EA51C4FDE6B8FDF4A8A64DB6297DFB6679B2873072F08737D53AF3EBA4EB7D46F8FDF87670B770B4F4479069B7C618B60FCB5836EFC41AB1CFD50AC45EFA4F607EBACDDB31A877EF8B78F437FCE71858A1C4D57C69C3836938DFED5ABB17D0835A47D50151E69F8A3467798651B67879F1B0365FD261C03A52D
FFB6114824B687DBAC471D3052FD8EF64BD1B2D72ACCB124F6GD9018201E62560DCE96391A21B4F39925EADABCF12D81EAA5347AA4379A92E79E5FC4DE372ADF663135F8936137B66681A22E27128222219AC9C496F87FBF3156F8713D699D20B005A017A00581AE2A8DD2FA73284G46F474D68BD96F188B6E05C00B01D2D6C3F820C6A053EA54157EC84DD83A2A460B0B5AAD7CE72D7B65C3280B956B5DF5B1ED35EB5E55F518694177011BBB44AD9E16CF53F11ACF70DB883498A8A59572895488E4CA45FC5E
F7C46D7D126B7C595B4BA5675DE6CC56BFCCB00FCF0D19476929EAF632A3B75B0B1D088E2941A81A8C4CD6028B1536928AF14D87DA8CA424212DECBA0B36121506ED40B7B6CCACBFB3BD788A5C5C5AB4357C9C7AE40BFAFEEA7BC47D799A0BC3FE17D3D5026FF27A382C2D999313354B034FDD5610B4B53E0D1993CBEF3B871FFBFAF3D5F5332E6DDDF55D548CC8925D1F484ABA2B553D2CA3A13EA5C0A9EB302C37E6227EB4EBD0FFFF19E0FEDE9CB3BF9DEBDC79181C272C6EF2DAA1DCB050ACAE67D399C4CE72
4EA2FC8D36DF33CF90AC9E5CA9EB318EE7B4127B5EF01DCDEBB11A499DG729D7E0DE44F0545E66CB51A91FB08E2FA0B0DDE1E46B021597B3DEEAB1B556FF5DB532CFE2FDBC6336FBB9037B4FB3B770D5DD798C45FC9E7C17E4A0098367EA3449AB976ED0EF5F2ACE3A7E2D60E85F3EC9A47B666A2B603E35F6558EC0EED4EC3AC1CE3B3B83610E36F6EC2AC16E3B7F1AC01E3DBF6A3163E8E31199C4B61587B790815F36C7B9CEB615807FB906B62D88847A40EEDADC0AC10E3BF6458CC0EEDAFC4AC0CE3219C0B
60580EA24422B8F6BB4796F3ECA7FD6FAC249BD2B569081DAE255FD281F7A747C64A687AB13803B9F6A3456600BB1AE3267D1806309E31D7B91649B1F3B9E2399CFB1DE3159C33FE0C1816E3EFF04C4031118308B9B876B64726F3EC349231900E3D4331B99C3BF49031799CDB4A31E80E859CC2AC0EE34B8EA3163481312BB916453144AA4472B9B60DE3D59CCB2EC62C1DE357F12C0FE3ABEB909B65D8A04702B8362A9631D00EFD0DE3F3B916DA0758820ECD67D88C475654A33604E35F60D8CA86E26B9A904B
66D890470AB8F61A3EEB2E83F78747768D21CD0EE670B932033C238D616EF86A1E475D818E77FBCBA7C2A4FEB51C25F1632424116885FF1F7ABD311C4C01EC83E64958AF52261C753922035CC78CA3405681B39B9E12565C6EBED790F04C9922A57A094940FE69A74DA542D8FBD45AC51D6DC4CF8F9FC037D9C5BD7693F79E755EA7059DD56F136EBB2A5EA74DBB6A3BCF0AB86A2DCFE2BAFAD1A2F7F5FB5CADFADC57AF8A7CFCED7AAAB90CD632E84959BA26475EFA92074A5825CDEF3318CC647D1C006382F33D
5AD8B581F41A1E0963029F646278A597B036D7626FF9248C3B406DG8A4AC49B3D132E2F4F4AF43531F932BBB253537618BE169D732E7B14E36A3ADFFB0C0CC36C16811BDEF4576F46E3D95C4FB903E81244FE22C29666834AAF51D7176E7CBBA8BF737346DFF00C0C153A0D8623CDBE35424A6EF71B565132375BC5BB1D4C5469A41DDCE68757E31955CB165AE21E5E60F16F797F7238FA7E2FB96EBD7FDFBBBEF67E3FF35CFB7EEFBABEF67EEFBD6E4D06D9DE13B6A873DA426D734D3CACF57B24EF0E19DDEE9E
F537CB528EAE827B0967F6392090472B699B51AE87AF903BEC84F79710E3A35A651633B8EE8E5A68E90321045F8D174FCF3B64011CCFE3715517282DB5AC1063080167922014CD4EB8653BBBB21471B94FDB36E4AA71B2DEBF9F6EF157C3B644D985543E897520ED453924E9936AE1AF5DBF918A6EF9C08BB7219EBE227307451BDC73AAECE66ECCF866EED653C37AC625FC7B38FCF79DD2132F926250EEC6792E3762DE2B3E4DA81F5DC6648BA1EE20484DA8DF8C1D9F4602BBC1A1C7FA967B1D834F72ACD77918
AD5EF3022CDDB9387BDE6A9E66B6A7D62F6576DCEFB6481396360F788EBA7E3F8C8C67D6A016CB477A4FC366CFF36CCE0A95033B1EE33B68D87FC3786F98476E22588E086FEF9C4B27ED68E99066C30E7DAF455EDC8EB2F32C000E75492261E60E5DCD3157817BBA470A68D87FE6106FA8476E215823906E960E1550317E67705F6F13917BA95B273AC249DBC6477AEB603F139C3B17E22FC3A7FBAF47765131BE395840A94B4FA8368552FD1B27D1CE477AAB817B8A8FF7BF45EE03B05F64D8852D43CF2DD44677
G452E873DE42CC42C120E756F86D956F16C97947BA9E02FA6E3B9DB3A481902DE1B4E5AE7545B6BC43B5EE634C27FAF8851D9643B0A070A093D36406FG20B020C805BD31B86E99A2ED8A59CE884D929DA04CFD1770DACB5156F340DD8E548164G1A8144F86FAEA5CF132E1BEC3D136B4E374A3C1D89E0BC47FB483AD237CEFF3E57E699B09B0EF8C84FE48FABA3698B6F415C86C87B1E2B6CCCA757503949E9503B056BB3094EC36E82BD7D0B174F35947BA66878F50E2D20731007GFB1EE3DF2158639057DF
B816D2C1B072754967B876ADBAB77996E478E90EED207310E349CA5E6FD02C904A70EF9C4BE4FBE741DD4BE53E01E2ED2B58F7CC9836094ECD8E8376AD0EFD0FE243A0F3BF674D22F313DA88F7F099E2B7D20C542937F83A6F5139494349CA3D5CCC31A6786F990EE553394963AB15617E07E297A00D2BB876811D1B94021EBF66327C00E277C218D39C53503949D7D6313A4030DBA8765594A56FB6BAB739997276A947EE25581309CA79F2685CA4F939D22737D16CAD975DFF540069BE17485BBE0ABD8F71B72D
C0FB358E2C20B6BCEC9900B6B27ABDE2FBDF99C05B3702BB90A88CA88208FC3F01550FE3C33CFEEC819C28834881B4E38B6EBBBB3D1978B737D9CDC609AC2F3341A86BCB720615FD495CADAC6E98F8AE5902E37CD0AD993370B107BC9EE67D4C6D75584F24E5E3BF7315A3241F2983F7A710140D7DCCA85FB7B4BD5B35BF8981779C2079EEB8FB2F53330B44971D6D7E3E47CA7145596E6FFB627370FDCF8278F53D0F733FF05AE6C600BB06E3E934FDDC826E348F907B34G67091A8F30BFBDB10A7DFD5D87184F
1F5511F4C6419D8CB47B834C6723FCBFC884E0D1C00BBFF066CB7850101A7921DABEDF2663285C8FD9FED6F27C1F942FD260AC1F2394A76E8E701B77A14ADFC25739B59A9893E8783AC38966C94B31DBE83890F04F65D8A78D37G5C519C7BB5670D655837AE902CFCAB443795B1092E8399406DGE27635D3D45A57F4406782C58345EDC55DAE6D4139CE4AB6542D7EA44DB338BB002C5B78DE14D66598B09070195B1C3A8C5B66B94EE4BA3C130E4DA236395B50CFA93EF01B3B8D9D48C09BDA84FE0D5BB10F87
693A72EC626658D98B41A2419D43315FD8D0E70BB9769C4552F38C29B9B91877678EE15E0BF2B06FA19612F69F388300E664E05E3FEDF59F7F0665B8739B1163AD6FAF52F1DFD40E3BDD3DC971389CF73B9A3621DD256CB0241AF6207CEF51356AC8F047F06CF65AA6AF81F77AC708452CA3D88E384BB8D61D0E7A2862180EE286F0BBBE62EDD5B159172D5CCFCEB68E3BEEA7E71F442063611D248DF494137D3BDBE5DAA59319A7CD03F853A18C79DD34935328ACA5E303C1DDF72F31475EE990FB2C83A3457B8A
40457CBFA1D384791D6D672B71FC417468DB054C50E82F5F9E8E5D4974BFFF27731DED44670F2FE0657CDD3A9ECA7804DCE8E3F3095C91254A7D42A4ED721D2782D22F287FBFDD7CC99ED62ED07A6716A97DD7F970FF6662CF5A683BE5FF16375F6F403CA57CFE36E03AB75B6B771F83F2D91EC265678C7D4144E95F1C134C7475FB1A8EFF2D4C47D4A5E52CFC1EAFA365D3AC93168FD9CF0A0678D2F631F2495D0565736BFD6B9565B32833151411426176F977C01AACE78770846D42F1608B85AE6F5648EE6A0A
0A9A8B39672205F52C72B93781AC0B793B304E6D98A4F18A3B8D29D9C0C5C0CCC70E0FD0C733EF7F3E5092D0202A2318760DC90D3B19EECC3B1D659F70C6E8B2CB53BE04E94E5A0D65FF4B10FB798FA5AB4B6F7F065C4BBF4F25FC539D6E657FEE0A523F4661DE7E48AFFF3B3B404B3BD5BAD2A02384A63BEE985B28185D282F2E0BC4DFD97920AB2046FCEC236E7258C352156FEC1724FCEFED545BF44C9018EFF07B6E6F0AC6024FD4604C862EBF02FB704340AFF38F36A98F50791D835CB3B916C967F2E160DE
4031F3F9589E45F00C3D73C9AB007639G73E35AC556BB4B38FB103A4999E1F98FF55EF857EEC99C638927A4164666DD63CD435B9A70D8BC994213FB681971BE4B103D55E2119AF5E603C934F79690BB0A5B03365BD800F5F4FB81B9E7EBA2F3FB794C938BFB20G4306001B0DD14D85B886188358FC20D82014C2C3EAEEA16A35FD946D2631106929335029AFEB21B73B59CD6F3A19D668EEB77BA8BE23505DEEFED107F6B39B7C520B306CE3697CD782F79047A2F4848B8577DC0E556A89968D6EB80E7D420036
14D90C58BFA9D6856E0EE23EBF0E0E57CC608EG1A4171840A4F86B7B95BCD4E01B37C6A8B93FDAFC062276DB4BCCD453E5EBD5CBC61B4145FDE73E6F74CD61A4E12B653EA93FBC41BCDB4481F64E27652CD47208BC046A820729202EDAA2D9B43DE17A952CD821EAC200D32CC79A52C4C177174671EA5EB8B7DC63331FF201F264E520E24E987C07869A5E8577692FAE6CFF4C8F3819304C3C4BD8213AB2A8465CAA871542972BBF1741CEAA934A3C05BE5F7F9293BDCD71F23F2699CEEF27D1C0E2D6BA03C3694
657AFAB1496F2051EEA4EFE3D8389F5271B6BD6BDA0AFD606E94AF6FA15AF55D5D224165BD441F0A5556FB03A02E50D29C1F1E93F1FEB72F945B7E35BD44DE1700BB2D8C72D8464FBF74AA5B7ECA4035E5CEBD994ADCF566GB72B2BCF52317E74B2773179B3941FD966BEB6B71E443179EC70CB5F4B5F9B53B5D9895C019CBB3F1E0E57419D4E3117B7E0FDDD3497E53FBB0314FB7ABEF45FCF5D648E85662E4ED02BA7A47CC46A0EFADD7CCCB50D0934695E6BE2FBA64917D1EFB1B39B7A024EE772A19F657B50
5686AC2EF560F672E9D0A1F49F897FD7CB5618E97C1BAC0301DD5B68FE949647EB1F89BC1F31AE7B2E97C33C42FE45B9047D2EBA4D5D0FF612E9A565DE395F5DCEBE20F84BFEF7BB395D02F65289FE617B317C6F24EB63B9651067F244F2EDE8931D65E8832F52F9D0A038E7824D61783FA89E8D6E84A0F2FF06FCAE4A0665C7420E37DCB07E7159488C1E464AF1460F6512BC4EF09942DAB79B4921B6127DB174579F230D1CBB6C3DCD7F931D9386C15819BC7CADF6D71B52F7BAED2AA3FDEC1BF224FB5A54F564
1347743B459942F70B8360F9DDCF8F7C6B8B545F9894F0630D1B823BEBD28293EBD7846AEBD38217572C886C2E5388E535C20A3E2E26242EE615263BFEE873053A3AA27D11E17BD0E619267B48505050066EA2FD4366218BED420A6E1A136BB7562C6853576DB8158371F417103F950164BB420230A990926BA169611F290264677745B86E1E8F79A7F352768AD63EECBEB4DA221C2F127C611CA88C42A5D4B8ED014DC1BEDC235CB7EC7AE3DCA23997C5ED1E16FD00713648CF49F4D05EB7FC6BD92263G400300
C2016681C582ADBE006BFC3BCE1279C1353527D5E4AFB10F694C3ADEFA3BCAC58540CD7D60D2AE6F639822541F7D5F4EFC7DFAA54E2D667C7CF6E16EF551095E4E6E27D4327C644A4F226E0309644972D65CC5725681FE92508C20B020882068CA4C5B0513723EE832B521DA12F47ABEFAEB8C5F68E094071CB0F981416CAAF12F06CE5A172D27FF69EE3F57733F7FBFFEFB5183337B2E3DE877F1154C6EC78FAA6D7EDFFB156BGCA3B8F06F042A1275DB33B3A5763FC40785A485FCC10AF41EFBE567F3CC5578E
B4071C63BB068BC3844FD7602CDF5ABD086B976560B773906E7B7C1A0E3EEBBAECC84D86AA83EA81B281859EC6BB7E7949A2E10C3D5C6D96EB0BB8A81A94DBE0D87E9CC39353CB4FB0724DBC6C5ACF0501BB428D0BBA0C7D75C23AC63078307B5C6CE90A8BD56EF3331E0BB8B74B84BFC795764D8F56631CAB1AE315C7303F962A31DFDEC64F2767033B0AE3E9946BGB7393703E15FB9F2257B2DB08D6FBA1BFD45E9786A33D91F78D8AEE92386495DE8FA1D09EDB42A5159349613D1BFAC77452F527590522E0F
D6E3DF3CBB0F44E1308C50C3A0BDBD649AD86C3B6B78DDCC73A0FCCCB5418673B4BE64DCA06B0145FDF79E294FB64BD02328E3FBDB4AEAC89C8F67117EBF3786E5F8321074676C0DAC722EACA0796D51196CE4AC417A0810A1E55FD73E7ABD2F7796B8EA189C5365E7528D8793D93C2DAE7132F9CDF0814EEBA2EAF0BDEEC1017BFA5C9B02F2BD6DBF856E6BF14BDC7C0B8ABD56E317A97D3B8B5D576310DF1E2B50F7CC89A0CFD6AD5AF9FDB55AFEBE47A2EA783B1CDA3473E2DAC7C6419D4431CA0A11B3B364BE
9139ED2C7357AEC9FC6E58288A66347DE83F53D033F35FEB8ACB8B3D0FBF33689E05D010B12C966D6DA99D3137EE3A980C6FD77F2E43F1E7B404DB8214DBE7C82D2CE37AE2FC1D551E6FE5CDFA64EB0730A620E020D9B29F2BB38B8D3E6ACCF81D324E2C915557A7F6503977C2889BD30779789B1D3B34545869D5AA8C6BEBA76D26720A9506A75075AB3C76C53E7B5326344134FAA6F391BC59187A3CDE60F2ADA9A1E7F44C621006DFCED2E70461115DE8B1676EAF4A57146C030665C39A9646E8827E459DD643
D87C392418643A7DCC9A0E7F326F7A01D077E4F462F6C13DEE5755B3FD8557BB5756175CF6EFB20B735BBDCE1997970FA5F3C99E267F274F15EDCB7ACDC9C94B3C243FC0CEB7CA113EFC17DBA9FF7F5DE0C875CF9769FD4445FE179A1DF968AB5E66BD8F45C5C5108B72FF9E063F3F184E2DEC8372FA7D4A927E2E3A8157EC2C867A2E9A5C41C0339B300DB0083E4684918D4EFA9EA57FE6FD7855F48DE8F1037BBB45EFD0BC69087BBB454C9EFC27188DFE81C778D909DEA26BA2F047F3ECADBD7F1256E8C855B4
72BD68DAEC736AB8768A457A40BD5A0879795BC9220BC06EFE113A49FDC17259661363ED1BC89C7E7659AC0D40F127B171757AEBDABD5B331B783928190D2CBD1B834F790D6C3EA4F94DF13DE7FBF663FA640B013071C46FCDB07EECE2FC2CBDDB162171A1D3CB1332BDAB964974407DBAA5E6678DA6271D57DA4EA86C9C5F7752D9A63956B017EC03A59B3CF3738A60A7CECAF33795122589FB219DDA4A4212B2C7C9D92159E26B57198A8DBAC9F78EDABB0BCDAA78425A3BAD0F0CFBD8DD1FFFC6792ED3337BC5
55773871E7B6A4F549F91956642C6BB15056487BA8687B7A39603720896D70E8BF354D8C5095479EB2233DA6B573B5A67A7EBF975C154DE80F6FD909FDB6F2F78EF513FB2364F1244517AD91BEFF6D4753DE9F721946152EBF32328E37FA5A5D137CFCDCE7B333BB891E014D6C5EACE6F707ED3E6CAE24D9E9F78DC6121F66963291903FB513A11272275FE8570B744C1CECFB46F7290DFA39CACB403B42736D6E7DA511EDCEB35E79758D173B3649BDF344FFFEB376277F69F75A7B746A4E4935779E1D2D7FDC8F
B984AB1BBBCBF32B4519661F57FDA8F86DCBCA764A1DB8DB6BF81E2E21A97F82G8827FF02F07B6D0FBC9297A788CB173E7DB6F90640DFE8A889C37ED87825CB1D611752BF416FBF56DF6CAC61E776C11719C771FD3CB80AFDF6516919C2510DCFF9DDB3EAB9AA3F0FBF6ADC8BE3793C29248A1EDF468B42BB89D04EB2AD7D8F135F03881E60244B71CCCE366671ABFEF75F0C236C9D4C9CB9BDB627DFE3A5EB9E8BG0B81DA821452826DABD0B9D0A3D0A71023856777734F644213CD6EF1CFEAC5C5EDEF1DB8E8
540B646EE2792082B59B46B37BACE9B34C7C0CC058D9659DEB725E6C3364FD2DCD3629A683628F1CA5F546E0B251DDFD72F9D27A3E4EE83693B3110C03B4386C777059F4D7BFFA91A44B6B298BC497411017B02005C031C089BCEF1F1E136F33D5D9FF2BB77412B393F6C9C7AAA98BDF51657DFCC6F557A6011F4FA0DCFA91B720703B4C1B3BC81E3BAD12E469A771A32E6DA2F916ACD68AB26CD4971D379AFB7BA496D446BF6FA2ED36C96C21B0331F113D8102536E515E7F5BFF2C1E4C5B0BEBC9D947E0BE8844
E45C3C2F8B1E71B0BAA7948EB5E9B28963E5F5200EFF6FA270982B832147D89DE07D4BBB03827F3DE248793BF8F0B24E3D796E5B1A27B48D79CC0F4E3B1D5E24D3BFC79422D3BF43F63B4E5B799E667FE31A165D651AC3CC6BDE9D513DE5089E791657943E24FBF766C1F9C49F43F1486591024501BB6DB8E20F0C70BD2F9CCB3CC8671A606EBB4E6F3C2258A83803B976BC454899B63237D35EB7F3F13CFAA771286123DEF0E759DEBB6EB4FC2D23F963E1E314D778D93DD947599E6CF0F8AEBC4E6EA2E1E31436
A39A9F71ACBE2E9C237CFB879D2350C186FEAF3AFA9929430A1302456C7D7C21C6777773A4CD61847407A7F0BC1FC43F1B259CCFA862A978243E353D29363A65DCDBED6B0916161A6A56F355ED670E5757575557B17E4F73F06E485C5F49A36334DA30E0E2C42C4F9D921573746C8F2392F16D4BBD2F79A7D8DEBBCEB8474E4E3C7F0D8C4765B88F0A4A39F75145C5DE6F4219AE47B57304F3DD0F75B77F266FEC97G9EFB827B18066E5D82590B780567C9D4G35B68B8C8425E106522E8B4F603A5C991822B524
E6EBFD0F2D6579542877F5281B69FADE9144D389446C49DE0DE55A27E57694G4FE0ADBB839A29A5E11E2AC1FB1A2DA2C338D6E9CFABBFF35A93FE7F3BDDF2E225727A42F9B2744575821D0FB1E1F1C9C93E263CA8CF6EDF5E6B46F1D856C968DFCE62BE13E48D59276B3E4F2400CDC8ABAA6AA5FD1FE828112727721AEBF7B76E8D8BBC096B92C1B47EF0F0C781458131F40375582F25349AD22BDAB15D62AE17BD0BEC0F67911B51D0236BE51BBCD9DA51FACC4B510AE92D26EBA0E1601E8F94530AF5688D8309
3B8DF849028C5357B7861C7ABAFDE1ACFD6D87FD4967ACFB3C1C33243392796EF9EA37E45C9A5F0A6FFEC687495E2222B6C3EA8B1095A890E8A6509C2079C051C0F1C0A96D50C6831581B582F58219008200025B319E740BF9BE6A012CB0BA60326958DDA2CC0EE7E97F4C62F822E70737B8E044568C59BB517D854C195AF53D823649EBDD5E854F82F966357B2EC772FB9AFE36B3D28E3FC841972F9287DBEFDAC44BB46D147BBB2657A92EB9657E0EE950006F184A40EF46A96C6BAE0A587FA5F06CEE0A65FE82
FA7E847B35C03A0E55896EG20D00E87D31C5CC3C36EF8096078FBBD5E7AA89247C4479D2EE917FACD63CA666E4902F30FDD06D052CB474C3AEE7A4189563EB551353BD810E349A7D8176EEC741C676FBF01EDDE47272C4D3342F35A276C5E9E36876487DA3EF6752927DED85C4BCF26B0995A0D12C9E47534E658D9CFB71CF336FB65F2F9BF580A6DD798449B7BA96EEBDB5D066D0326835B0772B69236835CD620408EEC0BFE3D9E5B22904022BA30ADAAADF1392F0835C58DA64B103C5B9C5B3DD59BB02D7453
1856FEFA97FCA3383B009C27D1FF9FE4A85BA2D6A733C708EE02A04CEC20C820D82084204C4F303EFF4D146B233EB3011C551D25356930E7196E21E776F2A15E324F304F127A31ECE6FCA61FC303E744E74C56D979C51B793B144F3C155FE10BE779BDF351D9FE3B3EF416DF31DCFECB2D287BB808B777F3AC3FA397D027DD1F23CE8768BE5A99608E831A7FB96A34532654A963575B89BF693BE3F81C8F7133B8F51DD83776F81CB99F6D9CCFFBF64003EF4D98750D1575BD23F48E8DE94C821A8F948594570965
2C33E8843575817AD5A3323F5384B386F91E7A17923ACDC37E437598D92FA53CFFBD837D6B990C7FDDAB51551051C0F5A55F59C0576E7AC4B2B9C6ECBB8DE7902D0AF039D652275975BA3349E89635BA030C9750B26C9E16C43BD63435009F434B68DAA7D934E56EF2AB511D15E5C166BDE8A5F9G2BB55B650BBD0C8E51A45FA56F66279FBE26331F173F9DF5417B1C4CF0E16C3503FEEADFA24C7949679D98E63BC06F596A69310BDC8FC39752B956E457DA482208454CEC60413D935BEF9169B79FAB6F337B3C
177734FDD85E8EA86B30B3D8B70207493BA972DD2CBA6320111C1431306F36486D410F697C71B6E00C65BC5F9DA1E92A6F9F38FB84778F441F417951B3A39A9F32271CD50EE75F3BC84A4D20AACBA91DE75E8F32E41FC5D93273094DB5EBA579DC2BC90EE7418AE7DBD2A26BA02381F5108F7C0633D86FBFEF4036E466D9ECCB3ECA43AE8477E22024F3181E7508F2FEA4FFCB2B915F81E61FC37E4EE67ACE965CA620E967F01C770FAF09AEE612F0C051C0CB00D23AE0CC87D486545205F5F1154DD71B4E86574E
B61D453F73B229D3FDBC0EE336EDBE62A077BD36C9B6982122BDAF351132606B8FEC0AA47B2D20EB61C6B318388EBF46473859F8A90C6E29980534493E87065DCB31E04048DE8A5666DFCF6D136933221A68435B7AF4F1D13E262CECDF9EAB3F1B2B317C42A03E58AEFE06321A7765BA547F7A9A5A17035B8A9428433046BAAC2B909D5F1BDAC7F4C65678585C740BF465FCB7FA78B52F735DA81DBCA76DF61D6F32FA2C699E2B9ED7F62B5DB7D8B0A61F7B5D190C2FF7CCBEF7E2E365A4BA576A68F65F3F360662
06EE777DEB5F6D46F230025F42EE6CABEF52CF2C3D1BB5C13EE77C66E3793AC467G65FA777CFE0562F5FA777C269BB03FDA701B236777005BB07DAC03339C73655FD570EC876AD37831FA94B4683DEF7A5E6058FDD348207A3A766D031E6B5AF78D2A2FEB5FB328DC57166F559AA475229766069DBC5C839CBB4D31F09AA741BEF599A77C164AC570C617314282AA579045BAE46CD185F69A671B0324ED05AC77D9781D15CF8D123A59E3B449FD7E53B48CF97FA0F1FDAC22B29A2122BB65FE09E3C4EE79BE43D2
EC1F16F1ECD7A936CFCEECFB896E439AB560DC7059CE5C079544314E33B8E71CE360F74A53F3DFB1600E6758BFA8C66E68C993919B253246ABECA346F0E56FF2BD6B478DB48D655A67E41DA52172523E7D5B2246C798573D013F9549D843C63EBDEB179AAC7A81FB3D199836C16E5FE3C4EC470BC4EC1B9FBDC94EF5B5EBFBBC3FG4B637D6C23AC17B0220D852893A51DD17EC66C5CCB19B48C5B132078BE1D1D2D3566FE2CF627D29D4851A1623B5C366582CF739F47BF95A675DD2E598243E35C35405A1DF3A7
F8BB8BB24C92318F3B63846AA9C6447E6E4FB4ECD60FA135882831074FE934585FF575206D4DEF1DD83F744418FC6A7D523A360935533369FCFCC60FFBBBFDAF45C3FB5C5B69C3EDFCFCGFE193D185F07BD6E1E9EDF7D7973847956FA5C8DBD3E7C5EC557849C3D6E791DC371E93D6E79BD3881739B84FECBFAF14C37E344FB7F12BFB2F67F32F7C43DFFB9B062593FD40D2877AF8DA34A7E05551F54A4E77DA9696F185C7A43AA36DC0118FEE67673FB827A205D6E43BA31281F1F7F6F437A3341CC77249B8D29
D9C0C5C68C3B5C02752751087614FCE1E2F611B1C13E963F79185D3CC457C3820C6E7674F70ACFB73A5B53458B282F99601740735BE7D7DBDF6C7A42350D105C5C01601E690605496E88854E52F8041E890C82FC71971E7D20F09E6A73F937F30167C91FE1E06B984B16F1E276F77FA8DD3320475851A6FFB9CA6EA9A36B902D2255A65A21DA3069A50EDFC609019253E26EC7C6553F059EB9CA523458DB0F54541BE17EA35AE53B707B9C14EC9793647B5A3E09714D701B0F55590BA3648913B26C4FC7DC5F9D7E
E7C4B9B7E6D873C54AD3D2A4277D2EDF5F8AF14A3CF302FCDDFE7331BA728E1D7F1B4E3B571D95745E8947F9773A73CD3E36B08D7CE24F73EF81B63A275FE2F25AF117495BFB0DC83AFEA0195C4F3A7E156253CC6EE7DD3B1BF11DBB987C62CD58978817FC5C79FEE96C3EA07D12FADF306912E7DF306512FADF30751267DC63A3B9DE9B3FE0D76E1FAE11F5D2767E009DBFF45E0F3A7BB231AF3B3CDE415660F59F11FC4BEB92F4BA4270EC479AA70E539159A6EE716BBBC5CEDB3AFB02FC31FE7331323E162EE1
F4763B5B60B7A85E576FEE031BEB5086A5700B6AC79BB43BFCC72852ECC8551AFD4FB558DAD2DC12861E86889BG948AB48FA892A896A881A85302F67618606B3DBB3FD0C67146115D5B9B1E414A092C98135528A322196BEDB5BD0BA037110A5FB33B27FE5F503D7F05B426991CF93ADE71FB13E16A53AE1C52B4647B6A69FB6EA23011968B4E198D67885685EEAB47FEF78E6751239CBBCFB1F23F5C820EED26F37598F0478331B9E38B1D2B27D9E15CE64577D529E7F0AED7E7E56F2BBA61E935327DC9EC0F05
7D2CC68E93E8752C8BB32D4AF92BEEB75D1F633CC12318618FFF6ADCE35EA75F2931BC55FD9EC9528C0378A22CB827FDCB74BC0F5675B13EFB0A3662187444EA12EE6685980B8255DD605F73BBB131F648BEC13E59FE7331F62AC9CB5B2F8B6E6DD7AB457BAE3837DFCF71792E84FED1BC3F0FE8DD5AAF9B34DF36713C037BC91B40FFBF2078DD57B675756B4CFFA10DFBB6B87374F3456F5A8DD31FF667FFA10D9F76CF4CDE43A64877125FFC4C1E2F23F3C7034D5D4E3FC9F12B4D5D4E334CE867236097E3C3BB
DFE9D126DFE7B724F65847E3672FDFF016FD3C6277D5933E5BE97CBA3BE9CA53103FABE2477BA4CDF67E1D970AB940BD13E335923D678D5C8BB876B3FA27F18C3863B9366A9076B7E992E2F994AB823716E34FD04CG6ED10EB5527D91643E4BC00E65E6E0FCB31D61A8968E6E05921EDD183141659E0F67DECFDCA9283FD70A15D8398B8372DEA871E0A253F76291E77926A9FE5F50B075E57D63A9CD03696D5B0DF876AFF7GF5393E99755BB2403FAD5CCC661E8E6E0E216E695C5D57BCD932BA86BC6B20DC3F
A6AD8D35F5F9164657EB1CE59C2C787DFE4D5417773EA9CD03156D35F578CE665A953C3E5761BB199349B877FBBB497BBCF6F97258735854E475F96C7AE44FF96C26E475F9ECF63267BCF6EBB2BBD753EB34181573581D49EA73D8B67E3B5166FD4F70CF6818F9B6585C5C819CAFDEBC67FAF752DF69D1E2F6A7DD4CB9DFF765A96F1BA33488620C9FE0F75251B34B034E3E0925FF939DF7E7811EB3086997142A1FCFEF2063F1AD046B9C44F7A46F5026CE3E6321D3A3F8FF377F713EFCCD713EE2F92D36748C76
090190D778A02E3FDEBC03EB357103B8AE3E1306AD9AB224B682F58D71EF7E99F02D56B1446F9326FBFBED727C1F052BC845F0E1C3986716B5A44ED8F08B8E18CBB878D85B659B5FC50057B91C6DC1074335EDB0B9706E135F5031FB0043FDCC300062539D6EE302D32B795AAB78A57074CFE885DE9FBB943F1FB9B175757F5FD31A065C47EA317EEFCCC66C85AD567FAD49A84BF433B36FB7A8FEFFE01EFABD6C1F52B4D81EBF30209EEAF9BB385D02FA58130CFBE7B424AA4A75EB05C45A3DBE0B4DB8E2B1CBBA
9379A4AA6EC0437A3CD5626F7F0631CEFCA6F9EFFF6CB47CF488BB03077F63C1524669CC46DEB3B9335701E1DF20E32B888897B50C7BC0B5AE5F26F1A796DF55218C97392BB1E6B95E4F78BE4C149114A17E904938E431185A0DD612D1D99FEF5257B60C4FC147E6E540D3B502729C4E98DB1EF399EC2F1FD1A2DD860BEBB0835B9D53886E5D8A21EDC4G3803C87CA33876B5A779BDC1EDCFE66B111ADA0B49424F67077373BCF3C6583DA18B60998354416F5A49ED567810B7FEC439AEB12CE7671D69F6DA793C
727A236E6715C95CE99731FDCEDF67341F5367FC5C15310F9C8DAED23D5FC37D4E8F963F1DEEC1E43F3F3B5E19D6DA2946FBDAA5C5B431A2797C727D9B1CFC8F1E71A163DE141155530F4FCCEC5EF7E402FC81FE7331BE607D3374EC42C5773E61A30A67DFF46F9B6E66FDE3B9784D3C483FABE5D026AF0C9AD2B3C747B3DFBC1C6AAEF72E022FD2A58EF9BECB6DDFBB6AAE778C0AF70E3A4B3DF58D4A5D87FE8BC67977B3BF46BB940A3E645F27D809F7A854F1ECF8950E7B7BB8963D8A6FD0187EA56A61F724F9
127376186277672B273EEF1026B48DD6874AA5D25F146F495B487FF8DC5ADE50D25F50AE5739E8D2ADE53E5987FD1DDBAAAD014AD31627DA3F997FBB87374A69D2DEE8602C96B3B453B43DF355ADCDC70E9F2BBF5E4E43DFB82471ADE7EB531146F6A66752CCE7BA6FE778286365F84F908BFBFD06F26DD45E7736067811CD484C7D23B5EC4F1AC85FA5B06C6EB5E48C5DED9A9019ED46B672719658D16417B806ACEA42F6BF65920E8D4FB61130D5606EG32DE42BE293E1924F35CE2D31CABE8BC0A7DED60A534
4F6DE71DB6192F78FD6F1929374FBFCEE99A72B7D18CB8F679959F43559814F3B806FD120AF37B70CBD81FA353300EAF627A3AE10DD3C75FD77C5E39E66A75D5B525E9303145ED347DCB3FECC84D3E0C6FACF2D3F0EC90F0193D3318814F591759D9B2B61689DA05E1A2AEFB36512CDEED5B645457EB9E6F1E4727030489726DED1AD8FF78982DDFD1175D7B1527A83E6832FB3FE2E862E702402FBDG6D6658D135746786B0DDAD88705499537DE57E4EA6A6000D4B626119F6955B2F4946E5AF26E9FC64A367AA
96B7AB039B48F18C393DFAE165A9E1F27789DA4FBB6FB6E27A502670718148E13D8A5B3299A958164D3A8A5B325F5230B1600E87CA3F9A435E378A5B2D5C2BD11FD1CDCEDBFAC6717B0B26292F0757CCE99A723BC85AD6F7C1FE2DD773F711C7793B482B717C5F9D29285F8500A5DD03BAFBBD9575DBF98D6A777DB43AEF835C5301C22F61677457A84F2031BCFE12B231FAE618A05F7F784D476AE145AA1227F95738574FDA0A4F3F463DFEAE607638907C4A2721BDBD30CA197ECC4043260D670C7D45232E6BDF
F369B539727A57D1DC7F0AD009EB297C076BDFD1900650C6D93E45531C32B3997F57E3ECBCBE5DBEB0C13EA5FE73B15DFF0B5AD97CB477B2390962C9573A174976B4AC13F470132E45B229226BF56CF7136277E3A9D3DF47DF1952B4D8FDFEEC15673A4A132B146BAA2CAE2FEF4176AF6ADA35FB9C31EDFF6ADD270E3E17667C9D22781D17B6753A2B79AF243129C5E91B695799D2F32E73DDDF19FE7734F81E33A8E9D11E33E0679577147D8FA8FC762BC232A42C2E2717140A3A911DA43C7B09F1E4009EB13309
1A86235DA85AB42D22A4CABA3BCDD847A789CD7494C84CE0E9C562F337A6AE97121A0495EC053FC9C8A24B74CDC2B2DD79ED9292A50B55E105D4174B25CAE839A4FCC0EEFAB7769875BA8D3D7D8D92B4091AEABD39A644A809768B42A54A62C2A044864F19CA75B77E72646CF3F5194B0565A087BBAD8B82502334B4E932C85440E3CCD250F20A124DED1BDC42A8438998A6B116904830DDEF69AFB0F677978C8C7697683A25823202D5C0DEC298787862335FF44D6D7B5D46ED4B0564A6A115DE9557C6C798ADC2
BAF561F57E1081C95850C232D5E85219FB8B59413E83AD42FA9A8EC7A6A4FAA2481A96A1C3919D3964516C74DA2B70BA555AA289EBD94CE6D1AA8477812A0FE512D0DAD050E915ECBA7DF95156C9C7BC1DE44453C9C7BC1DEC445369F62B23A4640E7782C8A2CD3A15AAAE0DA5D8B21E84DD2F5513041D633C000F2413E165E5C94A7B5F5CC5566EC7382B0138C0614C2AB58DF83A45A6CAC28614C90F4EBEE053C996EE77B26332DF8263E34A9C6D99CF0E786192C99847899492FB360B5A8A461308F3873EA4EC
9F47BEFD927F07D6C9D8D12B9B10F495DCB737C0123920862D4DC22EEC5468D8ED3409959AC9B04B6800C9E3901DDE9AABE036810DC5E3932DB6D0A4752507FC4053A076101D20BA0D518CAC22DD02D0C42BB68258F444DCB47A810DE411F4A608588A95006C8C970D85DCA832DCD1B9C6651DCF480523043B4810E51A0BE9E8A5E123335C0D1A7A9EE80086F4F223A3ABFE7738CA17CD89A4C1B3562C01443C470AF6A7AA6DCEB5EF04585E053C4B4A3D8B71573E1D686D9E7620697237A227BB4F44327573BF50
6FE447G1EB09D574E5F5F3FC770FE47CC9B48EE02C2B9DFEDB6107BE6EA489D82822E69BC361F44EF47B032A7737B4BFEA277978A1E7F87D0CB8788882A1414F6C2GGAC6EGGD0CB818294G94G88G88GB9CEF2D6882A1414F6C2GGAC6EGG8CGGGGGGGGGGGGGGGGGE2F5E9ECE4E5F2A0E4E1F4E1D0CB8586GGGG81G81GBAGGG30C2GGGG
end of data/
}

/**

  • Return the JCheckBox1 property value.

  • @return javax.swing.JCheckBox
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JCheckBox getCBexpand() {
    if (ivjCBexpand == null) {
    try {
    ivjCBexpand = new javax.swing.JCheckBox();
    ivjCBexpand.setName("CBexpand");
    ivjCBexpand.setText("Expandeaza");
    ivjCBexpand.setMaximumSize(new java.awt.Dimension(1000, 1000));
    ivjCBexpand.setVisible(true);
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjCBexpand;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @param session

  • @return

  • @throws RollbackException

  • @throws ObjectAccessException

  • @throws SQLException

  • Apr. 29, 2022 10:28:05 a.m.

  • @author Adrian Faur
    */
    public Vector getCurrentYearRecipeFertilizers(JDBSession session) throws RollbackException, ObjectAccessException, SQLException {

    Vector fertilizers = new Vector();

    GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPrecipeApplications().getName());
    if (editor == null || !editor.isPostOpenCalled()) {
    return fertilizers;
    }

    FarmAccountingYear farmAccountingYear = this.getFarmAccountingYear();
    if (farmAccountingYear == null) {
    throw new ObjectAccessException("Alegeti anul vizat");
    }

    Hashtable uniqueName = new Hashtable();

    Vector yearRecipes = farmAccountingYear.getFertilizationRecipes(session);
    for (Iterator iterator = yearRecipes.iterator(); iterator.hasNext();) {
    FertilizationRecipe fertilizationRecipe = (FertilizationRecipe) iterator.next();

     Vector <FertilizerRecipeDetail> fertilizerRecipeDetails = fertilizationRecipe.getFertilizerRecipeDetails(session);
     for (Iterator iterator2 = fertilizerRecipeDetails.iterator(); iterator2.hasNext();) {
     	FertilizerRecipeDetail fertilizerRecipeDetail = (FertilizerRecipeDetail) iterator2.next();
     	Fertilizer fertilizer = fertilizerRecipeDetail.getFertilizer(session); 
     	
     	if ( !uniqueName.containsKey(fertilizer.getFertilizerCd())) {
     		fertilizers.add(fertilizer);
     		uniqueName.put(fertilizer.getFertilizerCd(), 1);
     	}
     	
     }
    

    }

    return fertilizers;
    }
    public com.ptracker.domain.FarmAccountingYear getFarmAccountingYear() {
    return farmAccountingYear;
    }
    public com.ptracker.domain.FertilizationRecipe getFertilizationRecipe() {
    return fertilizationRecipe;
    }
    /**

  • Description :

  • Assumptions : None

  • @return

  • Jan. 4, 2022 2:05:17 p.m.

  • @author Adrian Faur
    */
    public FertilizerRecipeDetail getFertilizerRecipeDetail() {
    GenericObjectEditorPanel editorPanel = getEditorByName(getJPfertilizerRecipeDetail().getName());
    if (editorPanel != null && editorPanel.isPostOpenCalled() ) {
    return (FertilizerRecipeDetail) editorPanel.getSelectedPo();
    }

    return null;
    }
    /**

  • Return the JLabel1 property value.

  • @return javax.swing.JLabel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JLabel getJLabel1() {
    if (ivjJLabel1 == null) {
    try {
    ivjJLabel1 = new javax.swing.JLabel();
    ivjJLabel1.setName("JLabel1");
    ivjJLabel1.setText("Procent acoperire: ");
    ivjJLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
    ivjJLabel1.setPreferredSize(new java.awt.Dimension(132, 24));
    ivjJLabel1.setAlignmentX(java.awt.Component.LEFT_ALIGNMENT);
    ivjJLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJLabel1;
    }

/**

  • Return the JLcompanyList property value.

  • @return javax.swing.JLabel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JLabel getJLTitle() {
    if (ivjJLTitle == null) {
    try {
    ivjJLTitle = new javax.swing.JLabel();
    ivjJLTitle.setName("JLTitle");
    ivjJLTitle.setText("Tip Analiza");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJLTitle;
    }
    /
    *

  • Return the JPanel1 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPanel1() {
    if (ivjJPanel1 == null) {
    try {
    ivjJPanel1 = new javax.swing.JPanel();
    ivjJPanel1.setName("JPanel1");
    ivjJPanel1.setLayout(new java.awt.FlowLayout());
    getJPanel1().add(getJLabel1(), getJLabel1().getName());
    getJPanel1().add(getTFpercent(), getTFpercent().getName());
    getJPanel1().add(getPBRecipeTargetSectorPanel(), getPBRecipeTargetSectorPanel().getName());
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPanel1;
    }
    /
    *

  • Return the JPanel2 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPanel2() {
    if (ivjJPanel2 == null) {
    try {
    ivjJPanel2 = new javax.swing.JPanel();
    ivjJPanel2.setName("JPanel2");
    ivjJPanel2.setPreferredSize(new java.awt.Dimension(296, 161));
    ivjJPanel2.setLayout(new java.awt.BorderLayout());
    getJPanel2().add(getJTabbedPane1(), "Center");
    getJPanel2().add(getJPanel6(), "South");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPanel2;
    }
    /
    *

  • Return the JPanel3 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JPanel getJPanel3() {
    if (ivjJPanel3 == null) {
    try {
    ivjJPanel3 = new javax.swing.JPanel();
    ivjJPanel3.setName("JPanel3");
    ivjJPanel3.setPreferredSize(new java.awt.Dimension(122, 80));
    ivjJPanel3.setBorder(new javax.swing.border.EtchedBorder());
    ivjJPanel3.setLayout(new java.awt.GridBagLayout());
    ivjJPanel3.setMinimumSize(new java.awt.Dimension(122, 70));

     	java.awt.GridBagConstraints constraintsLBsearch = new java.awt.GridBagConstraints();
     	constraintsLBsearch.gridx = 0; constraintsLBsearch.gridy = 0;
     	constraintsLBsearch.fill = java.awt.GridBagConstraints.HORIZONTAL;
     	constraintsLBsearch.anchor = java.awt.GridBagConstraints.WEST;
     	constraintsLBsearch.weighty = 1.0;
     	constraintsLBsearch.insets = new java.awt.Insets(2, 4, 4, 4);
     	getJPanel3().add(getLBsearch(), constraintsLBsearch);
    
     	java.awt.GridBagConstraints constraintsTFtreeSearch = new java.awt.GridBagConstraints();
     	constraintsTFtreeSearch.gridx = 1; constraintsTFtreeSearch.gridy = 0;
     	constraintsTFtreeSearch.gridwidth = 3;
     	constraintsTFtreeSearch.fill = java.awt.GridBagConstraints.HORIZONTAL;
     	constraintsTFtreeSearch.weightx = 1.0;
     	constraintsTFtreeSearch.weighty = 1.0;
     	constraintsTFtreeSearch.insets = new java.awt.Insets(2, 4, 4, 4);
     	getJPanel3().add(getTFtreeSearch(), constraintsTFtreeSearch);
    
     	java.awt.GridBagConstraints constraintsCBexpand = new java.awt.GridBagConstraints();
     	constraintsCBexpand.gridx = 0; constraintsCBexpand.gridy = 1;
     	constraintsCBexpand.gridwidth = 2;
     	constraintsCBexpand.fill = java.awt.GridBagConstraints.BOTH;
     	constraintsCBexpand.anchor = java.awt.GridBagConstraints.WEST;
     	constraintsCBexpand.weightx = 1.0;
     	constraintsCBexpand.weighty = 1.0;
     	constraintsCBexpand.insets = new java.awt.Insets(0, 4, 2, 4);
     	getJPanel3().add(getCBexpand(), constraintsCBexpand);
     	// user code begin {1}
     	// user code end
     } catch (java.lang.Throwable ivjExc) {
     	// user code begin {2}
     	// user code end
     	handleException(ivjExc);
     }
    

    }
    return ivjJPanel3;
    }
    /**

  • Return the JPanel4 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPanel4() {
    if (ivjJPanel4 == null) {
    try {
    ivjJPanel4 = new javax.swing.JPanel();
    ivjJPanel4.setName("JPanel4");
    ivjJPanel4.setLayout(new java.awt.BorderLayout());
    getJPanel4().add(getJPanel5(), "North");
    getJPanel4().add(getJScrollPane1(), "Center");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPanel4;
    }
    /
    *

  • Return the JPanel5 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JPanel getJPanel5() {
    if (ivjJPanel5 == null) {
    try {
    ivjJPanel5 = new javax.swing.JPanel();
    ivjJPanel5.setName("JPanel5");
    ivjJPanel5.setLayout(new java.awt.GridBagLayout());

     	java.awt.GridBagConstraints constraintsJLTitle = new java.awt.GridBagConstraints();
     	constraintsJLTitle.gridx = -1; constraintsJLTitle.gridy = -1;
     	constraintsJLTitle.insets = new java.awt.Insets(4, 4, 4, 4);
     	getJPanel5().add(getJLTitle(), constraintsJLTitle);
     	// user code begin {1}
     	// user code end
     } catch (java.lang.Throwable ivjExc) {
     	// user code begin {2}
     	// user code end
     	handleException(ivjExc);
     }
    

    }
    return ivjJPanel5;
    }
    /**

  • Return the JPanel6 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPanel6() {
    if (ivjJPanel6 == null) {
    try {
    ivjJPanel6 = new javax.swing.JPanel();
    ivjJPanel6.setName("JPanel6");
    ivjJPanel6.setLayout(new java.awt.GridBagLayout());
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPanel6;
    }
    /
    *

  • Return the JPanel8 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPanel8() {
    if (ivjJPanel8 == null) {
    try {
    ivjJPanel8 = new javax.swing.JPanel();
    ivjJPanel8.setName("JPanel8");
    ivjJPanel8.setBorder(new javax.swing.border.EtchedBorder());
    ivjJPanel8.setLayout(new java.awt.FlowLayout());
    getJPanel8().add(getPBrecipeFileView(), getPBrecipeFileView().getName());
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPanel8;
    }
    /
    *

  • Return the JPcompanyData property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPfertilizationRecipe() {
    if (ivjJPfertilizationRecipe == null) {
    try {
    ivjJPfertilizationRecipe = new javax.swing.JPanel();
    ivjJPfertilizationRecipe.setName("JPfertilizationRecipe");
    ivjJPfertilizationRecipe.setLayout(new java.awt.BorderLayout());
    getJPfertilizationRecipe().add(getJPanel8(), "South");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPfertilizationRecipe;
    }
    /
    *

  • Return the JPfertilizerRecipeDetail property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPfertilizerRecipeDetail() {
    if (ivjJPfertilizerRecipeDetail == null) {
    try {
    ivjJPfertilizerRecipeDetail = new javax.swing.JPanel();
    ivjJPfertilizerRecipeDetail.setName("JPfertilizerRecipeDetail");
    ivjJPfertilizerRecipeDetail.setLayout(new java.awt.BorderLayout());
    getJPfertilizerRecipeDetail().add(getJPanel1(), "South");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPfertilizerRecipeDetail;
    }
    /
    *

  • Return the JPrecipeApplications property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPrecipeApplications() {
    if (ivjJPrecipeApplications == null) {
    try {
    ivjJPrecipeApplications = new javax.swing.JPanel();
    ivjJPrecipeApplications.setName("JPrecipeApplications");
    ivjJPrecipeApplications.setLayout(new java.awt.BorderLayout());
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPrecipeApplications;
    }
    /
    *

  • Return the JPanel1 property value.

  • @return javax.swing.JPanel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JPanel getJPtreePanel() {
    if (ivjJPtreePanel == null) {
    try {
    ivjJPtreePanel = new javax.swing.JPanel();
    ivjJPtreePanel.setName("JPtreePanel");
    ivjJPtreePanel.setPreferredSize(new java.awt.Dimension(210, 446));
    ivjJPtreePanel.setLayout(new java.awt.BorderLayout());
    getJPtreePanel().add(getJPanel4(), "Center");
    getJPtreePanel().add(getJPanel3(), "South");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJPtreePanel;
    }
    /
    *

  • Return the JScrollPane1 property value.

  • @return javax.swing.JScrollPane
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JScrollPane getJScrollPane1() {
    if (ivjJScrollPane1 == null) {
    try {
    ivjJScrollPane1 = new javax.swing.JScrollPane();
    ivjJScrollPane1.setName("JScrollPane1");
    ivjJScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    ivjJScrollPane1.setDoubleBuffered(true);
    getJScrollPane1().setViewportView(getTRlist());
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJScrollPane1;
    }
    /
    *

  • Return the JSplitPaneCompanies property value.

  • @return javax.swing.JSplitPane
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JSplitPane getJSplitTreePane() {
    if (ivjJSplitTreePane == null) {
    try {
    ivjJSplitTreePane = new javax.swing.JSplitPane(javax.swing.JSplitPane.HORIZONTAL_SPLIT);
    ivjJSplitTreePane.setName("JSplitTreePane");
    ivjJSplitTreePane.setLastDividerLocation(210);
    ivjJSplitTreePane.setDoubleBuffered(true);
    ivjJSplitTreePane.setDividerLocation(220);
    getJSplitTreePane().add(getJPtreePanel(), "left");
    getJSplitTreePane().add(getJPanel2(), "right");
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJSplitTreePane;
    }
    /
    *

  • Return the JTabbedPane1 property value.

  • @return javax.swing.JTabbedPane
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JTabbedPane getJTabbedPane1() {
    if (ivjJTabbedPane1 == null) {
    try {
    ivjJTabbedPane1 = new javax.swing.JTabbedPane();
    ivjJTabbedPane1.setName("JTabbedPane1");
    ivjJTabbedPane1.setRequestFocusEnabled(false);
    ivjJTabbedPane1.insertTab("Reteta Fertilizare", new javax.swing.ImageIcon(getClass().getResource("/icons/size/24x24/normal/notes.jpg")), getJPfertilizationRecipe(), null, 0);
    ivjJTabbedPane1.insertTab("Desfasurator Reteta", new javax.swing.ImageIcon(getClass().getResource("/icons/size/24x24/normal/recipe.jpg")), getJPfertilizerRecipeDetail(), null, 1);
    ivjJTabbedPane1.insertTab("Fertilizari Efectuate", new javax.swing.ImageIcon(getClass().getResource("/icons/size/24x24/normal/npk.jpg")), getJPrecipeApplications(), null, 2);
    // user code begin {1}
    this.setEditorTabPanel(ivjJTabbedPane1);
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjJTabbedPane1;
    }
    /
    *

  • Return the JLsearch property value.

  • @return javax.swing.JLabel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JLabel getLBsearch() {
    if (ivjLBsearch == null) {
    try {
    ivjLBsearch = new javax.swing.JLabel();
    ivjLBsearch.setName("LBsearch");
    ivjLBsearch.setPreferredSize(new java.awt.Dimension(60, 20));
    ivjLBsearch.setText("Cauta:");
    ivjLBsearch.setMaximumSize(new java.awt.Dimension(200, 200));
    ivjLBsearch.setMinimumSize(new java.awt.Dimension(50, 20));
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjLBsearch;
    }
    /
    *

  • Return the PBnirInvoiceView property value.

  • @return javax.swing.JButton
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JButton getPBrecipeFileView() {
    if (ivjPBrecipeFileView == null) {
    try {
    ivjPBrecipeFileView = new javax.swing.JButton();
    ivjPBrecipeFileView.setName("PBrecipeFileView");
    ivjPBrecipeFileView.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/size/24x24/normal/data_export.jpg")));
    ivjPBrecipeFileView.setText("Vizualizare Fisier Reteta");
    ivjPBrecipeFileView.setMargin(new java.awt.Insets(2, 8, 2, 8));
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjPBrecipeFileView;
    }
    /
    *

  • Return the PBRecipeTargetSectorPanel property value.

  • @return javax.swing.JButton
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JButton getPBRecipeTargetSectorPanel() {
    if (ivjPBRecipeTargetSectorPanel == null) {
    try {
    ivjPBRecipeTargetSectorPanel = new javax.swing.JButton();
    ivjPBRecipeTargetSectorPanel.setName("PBRecipeTargetSectorPanel");
    ivjPBRecipeTargetSectorPanel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/size/24x24/normal/farm_field.jpg")));
    ivjPBRecipeTargetSectorPanel.setPreferredSize(new java.awt.Dimension(250, 26));
    ivjPBRecipeTargetSectorPanel.setText("Specifica Sectoarele Acoperite");
    ivjPBRecipeTargetSectorPanel.setMargin(new java.awt.Insets(2, 2, 2, 2));
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjPBRecipeTargetSectorPanel;
    }

/**
*

  • Description :

  • Assumptions : None

  • @return

  • Oct. 12, 2021 8:00:28 p.m.

  • @author Adrian Faur
    */
    public SectorDtlFertRecipeDtl getSectorDtlFertRecipeDtl() {
    GenericObjectEditorPanel editorPanel = getEditorByName(getJPrecipeApplications().getName());
    if (editorPanel != null && editorPanel.isPostOpenCalled() ) {
    return (SectorDtlFertRecipeDtl) editorPanel.getSelectedPo();
    }

    return null;
    }
    /**

  • Description :

  • Assumptions : None

  • @return

  • Jun. 19, 2021 4:32:28 p.m.

  • @author Adrian Faur
    */
    public OVTreeNode getSelectedTreeNode() {
    if (this.getTRlist().getModel() == null )
    return null;

    //OVTreeModel model = (OVTreeModel ) this.getTRCompanies().getModel();
    javax.swing.tree.TreePath selPath = this.getTRlist().getSelectionPath();

    if(selPath != null) {
    return (OVTreeNode)selPath.getLastPathComponent();
    }

    return null;
    }
    /**

  • Return the selectionModelTRcompanies property value.

  • @return javax.swing.tree.TreeSelectionModel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.tree.TreeSelectionModel getselectionModelTRlist() {
    // user code begin {1}
    // user code end
    return ivjselectionModelTRlist;
    }
    /
    *

  • Return the TFpercent property value.

  • @return javax.swing.JTextField
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. */
    private javax.swing.JTextField getTFpercent() {
    if (ivjTFpercent == null) {
    try {
    ivjTFpercent = new javax.swing.JTextField();
    ivjTFpercent.setName("TFpercent");
    ivjTFpercent.setToolTipText("Procentul de acoperire pentru o repriza de aplicare definita in acest retetar in raport cu totalul plantatiei.");
    ivjTFpercent.setPreferredSize(new java.awt.Dimension(80, 26));
    ivjTFpercent.setEditable(false);
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjTFpercent;
    }

/**

  • Return the TFcompanySearch property value.

  • @return javax.swing.JTextField
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JTextField getTFtreeSearch() {
    if (ivjTFtreeSearch == null) {
    try {
    ivjTFtreeSearch = new javax.swing.JTextField();
    ivjTFtreeSearch.setName("TFtreeSearch");
    ivjTFtreeSearch.setPreferredSize(new java.awt.Dimension(70, 26));
    ivjTFtreeSearch.setMinimumSize(new java.awt.Dimension(70, 22));
    // user code begin {1}
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjTFtreeSearch;
    }
    /
    *

  • Return the TRCompanies property value.

  • @return javax.swing.JTree
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private javax.swing.JTree getTRlist() {
    if (ivjTRlist == null) {
    try {
    ivjTRlist = new javax.swing.JTree();
    ivjTRlist.setName("TRlist");
    ivjTRlist.setShowsRootHandles(false);
    ivjTRlist.setLargeModel(false);
    ivjTRlist.setBounds(0, 0, 160, 120);
    // user code begin {1}
    ivjTRlist.setModel(new DefaultTreeModel(null));
    // user code end
    } catch (java.lang.Throwable ivjExc) {
    // user code begin {2}
    // user code end
    handleException(ivjExc);
    }
    }
    return ivjTRlist;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @return

  • Mar. 6, 2021 11:11:45 p.m.

  • @author Adrian Faur
    /
    public YearFertRecipeTreeNodeWrapper getYearFertRecipeTreeNodeWrapper() {
    return yearFertRecipeTreeNodeWrapper;
    }
    /
    *

  • Called whenever the part throws an exception.

  • @param exception java.lang.Throwable
    */
    private void handleException(java.lang.Throwable exception) {

    /* Uncomment the following lines to print uncaught exceptions to stdout /
    // System.out.println("--------- UNCAUGHT EXCEPTION ---------");
    // exception.printStackTrace(System.out);
    UiErrorHandlerService.handle( this, exception, null, true );
    }
    /
    *

  • Initializes connections

  • @exception java.lang.Exception The exception description.
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void initConnections() throws java.lang.Exception {
    // user code begin {1}
    // user code end
    getTRlist().addPropertyChangeListener(this);
    getTFtreeSearch().addKeyListener(this);
    getCBexpand().addActionListener(this);
    getTFtreeSearch().addMouseListener(this);
    getPBrecipeFileView().addActionListener(this);
    getPBRecipeTargetSectorPanel().addActionListener(this);
    connPtoP1SetTarget();
    }
    /
    *

  • Initialize the class.
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void initialize() {
    try {
    // user code begin {1}
    // user code end
    setName("ChemicalSampleTypePanel");
    setLayout(new java.awt.BorderLayout());
    setSize(1036, 699);
    add(getJSplitTreePane(), "Center");
    initConnections();
    } catch (java.lang.Throwable ivjExc) {
    handleException(ivjExc);
    }
    // user code begin {2}
    // user code end
    }
    /
    *

  • Description :

  • Assumptions : None

  • @return

  • Feb. 14, 2022 10:24:19 a.m.

  • @author Adrian Faur
    /
    public FertilizationRecipe instantiateFertilizationRecipeCallback() {
    FertilizationRecipe fertilizationRecipe = new FertilizationRecipe();
    if (getFarmAccountingYear() != null) {
    fertilizationRecipe.setAccountingYear(getFarmAccountingYear().getAccountingYear());
    }
    return fertilizationRecipe;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 1:07:34 PM)

  • @return boolean
    /
    public boolean isFarmAccountingYear() {
    if ( yearFertRecipeTreeNodeWrapper != null && yearFertRecipeTreeNodeWrapper.isFarmAccountingYear() )
    return true;
    return false;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 1:07:34 PM)

  • @return boolean
    /
    public boolean isFertilizationRecipe() {
    if ( yearFertRecipeTreeNodeWrapper != null && yearFertRecipeTreeNodeWrapper.isFertilizationRecipe() )
    return true;
    return false;
    }
    /
    *

  • Method to handle events for the KeyListener interface.

  • @param e java.awt.event.KeyEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void keyPressed(java.awt.event.KeyEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the KeyListener interface.

  • @param e java.awt.event.KeyEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void keyReleased(java.awt.event.KeyEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the KeyListener interface.

  • @param e java.awt.event.KeyEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void keyTyped(java.awt.event.KeyEvent e) {
    // user code begin {1}
    // user code end
    if (e.getSource() == getTFtreeSearch())
    connEtoC2(e);
    // user code begin {2}
    // user code end
    }
    /
    *

  • main entrypoint - starts the part when it is run as an application

  • @param args java.lang.String[]
    /
    public static void main(java.lang.String[] args) {
    try {
    JFrame frame = new javax.swing.JFrame();
    ChemicalSampleTypePanel aClientSalePanel;
    aClientSalePanel = new ChemicalSampleTypePanel();
    frame.setContentPane(aClientSalePanel);
    frame.setSize(aClientSalePanel.getSize());
    frame.addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent e) {
    System.exit(0);
    };
    });
    frame.show();
    java.awt.Insets insets = frame.getInsets();
    frame.setSize(frame.getWidth() + insets.left + insets.right, frame.getHeight() + insets.top + insets.bottom);
    frame.setVisible(true);
    } catch (Throwable exception) {
    System.err.println("Exception occurred in main() of com.objectview.frame.ui.OVPanel");
    exception.printStackTrace(System.out);
    }
    }
    /
    *

  • Method to handle events for the MouseListener interface.

  • @param e java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void mouseClicked(java.awt.event.MouseEvent e) {
    // user code begin {1}
    // user code end
    if (e.getSource() == getTFtreeSearch())
    connEtoC3(e);
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the MouseListener interface.

  • @param e java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void mouseEntered(java.awt.event.MouseEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the MouseListener interface.

  • @param e java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void mouseExited(java.awt.event.MouseEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the MouseListener interface.

  • @param e java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void mousePressed(java.awt.event.MouseEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    /
    *

  • Method to handle events for the MouseListener interface.

  • @param e java.awt.event.MouseEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void mouseReleased(java.awt.event.MouseEvent e) {
    // user code begin {1}
    // user code end
    // user code begin {2}
    // user code end
    }
    public ChemicalSampleTypePanel mySelf() {
    return this;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/29/2020 6:24:33 PM)
    */
    public void postOpen() {

    // select first Company node, if any
    OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
    OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();

    OVTreeNode ovTreeNode = rootNode.findFirstNodeForClass(FertilizationRecipe.class);
    if (ovTreeNode != null) {
    YearFertRecipeTreeNodeWrapper yearFertRecipeTreeNodeWrapper = (YearFertRecipeTreeNodeWrapper) ovTreeNode.getUserObject();
    xExactSelectTreeNodeFor(yearFertRecipeTreeNodeWrapper.getFertilizationRecipe());
    }

    if (this.postOpenCallback != null) {
    try {
    postOpenCallback.invoke();
    setEnablements();

     } catch (Exception e) {
     	UiErrorHandlerService.handle(this, e, null, false);
     }
    

    }

}
/**

  • Description : store user settings

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/18/2020 12:12:30 AM)
    */
    public boolean preClose() {

    // save user UI preferences
    PtrackerSystem system = PtrackerSystem.getInstance();
    /*
    setSystemSettingValue(
    String systemSettingName, DomainObject obj, String variableContext,
    String variableName, String variableValue, String variableDefaultValue, String variableDescription )
    */

    try {

     // divider location
     PtrackerSystem.getInstance().setSystemSettingValue(
     	PtrackerSystem.UI_SETTINGS_APPUSER,
     	system.getAppUser(),
     	this.getContextName(),
     	this.getJSplitTreePane().getName()+"@dividerLoc",
     	""+ this.getJSplitTreePane().getDividerLocation(),
     	null,
     	"ChemicalSampleTypePanel SplitPanel Divider value"
     	);
     
     // release tree model session
     TreeModel existingTreeModel = this.getTRlist().getModel();
     if (OVTreeModel.class.isAssignableFrom(existingTreeModel.getClass())) {
     	
     	OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
     	OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();
     	if (rootNode != null) {
     		ObjectTreeNodeWrapper wrapperNode = (ObjectTreeNodeWrapper) rootNode.getUserObject();
     		wrapperNode.releaseInternalSession();
     	}
     }
    

    } catch (Exception e) {
    UiErrorHandlerService.handle( this, e, null, true );
    }

    return true;

}
/**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/29/2020 6:24:22 PM)

  • @return boolean
    */
    public boolean preOpen() {

    // here we start loading process: - we create a Tree model and load it, then mainEditor will call back a tree reload, this time with its sorted data
    reloadTree(null);

    try {
    xConfigureFertilizationRecipe(this); // keep mainPanel first one as it is used in callbacks fo the next ones
    xConfigureFertilizerRecipeDetail(this);
    xConfigureRecipeApplications(this);
    } catch (SQLException e) {
    UiErrorHandlerService.handle(this, e, null, true);
    }

    this.getCBexpand().setSelected(true);

    restoreAppUserPrefs();

    setEnablements();

    return true;
    }
    /**

  • Method to handle events for the PropertyChangeListener interface.

  • @param evt java.beans.PropertyChangeEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void propertyChange(java.beans.PropertyChangeEvent evt) {
    // user code begin {1}
    // user code end
    if (evt.getSource() == getTRlist() && (evt.getPropertyName().equals("selectionModel")))
    connPtoP1SetTarget();
    // user code begin {2}
    // user code end
    }
    /
    *

  • Description : This is called as a callback from menu.TabbedPane_StateChanged()

  • Feb. 25, 2021 3:15:09 p.m.

  • @author Adrian Faur
    */
    public void refreshAllData() {

    reloadTree(null);

// GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get( getJPyearSaleHistory().getName());
// editor.refreshAllData();
//
// editor = (GenericObjectEditorPanel) this.myGenericEditors.get( getJPclientSales().getName());
// editor.refreshAllData();

}
/**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/29/2020 8:29:19 PM)
    */
    public void reloadTree( Vector data ) {
    try {

     // IMPORTANT !! release tree model session if any, so tree can be reloaded on subsequent calls without leaking sessions
     TreeModel existingTreeModel = this.getTRlist().getModel();
     if (OVTreeModel.class.isAssignableFrom(existingTreeModel.getClass())) {
     	
     	OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
     	OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();
     	if (rootNode != null) {
     		ObjectTreeNodeWrapper wrapperNode = (ObjectTreeNodeWrapper) rootNode.getUserObject();
     		wrapperNode.releaseInternalSession();
     	}
     }
     
     YearFertRecipeTreeNodeWrapper rootNode = YearFertRecipeTreeNodeWrapper.newInstance(data);
     OVTreeNode treeNode = new OVTreeNode(	
     	rootNode,
     	new com.objectview.util.GetterWrapper( "getChildren") ,
     	"toLabel" );
    
     OVTreeModel treeModel = new OVTreeModel ( treeNode );
     this.getTRlist().setModel ( treeModel );
     treeModel.dbExpandOne(treeNode);
     
    
     // set single selection tree
     javax.swing.tree.DefaultTreeSelectionModel sm = new DefaultTreeSelectionModel();
     sm.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
     getTRlist().setSelectionModel(sm);
    
     // hide root one-click handle
     this.getTRlist().setShowsRootHandles(true);
     this.getTRlist().setRootVisible(false);
    
     this.getTRlist().setCellRenderer(new ObjectTreeNodeCellRenderer());
    
     // expand all
     //treeModel.refresh(); // call this to create correspondent OVTreeNode for all JDBInheritanceMode (expand tree, otherwise only first 2 levels are available for search)
     //treeModel.dbExpandAll();  // this does not show the tree expanded more than first level. It does instantiates all relationships, but only shows tree expanded at first level
    
     // we show all tree expanded
     //OVSwingUtilities.setTreeExpandedState(this.getTRlist(), true);
     //for (int i = 0; i < this.getTRlist().getRowCount(); i++) {
     	//this.getTRlist().expandRow(i);
     //}
     boolean expand = this.getCBexpand().isSelected();
     OVSwingUtilities.setTreeExpandedState(this.getTRlist(), expand);
    
     setEnablements();
    

    } catch (Exception e ) {
    UiErrorHandlerService.handle( this, e, null, true );
    }

}
/**

  • Description : Restore user UI prefs

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/18/2020 2:14:12 AM)
    */
    private void restoreAppUserPrefs() {

     //SystemSettingValue getSystemSettingValue(String systemSettingName, DomainObject obj, String variableContext, String variableName)
     
     if (PtrackerSystem.getInstance().isRestoreAppUserPrefs() ) {
        	
         PtrackerSystem psystem = PtrackerSystem.getInstance();
         AppUser appUser = psystem.getAppUser();
         
         SystemSettingValue jSplitPaneDividerLoc = psystem.getSystemSettingValue(PtrackerSystem.UI_SETTINGS_APPUSER, appUser, this.getContextName(), getJSplitTreePane().getName()+"@dividerLoc");
         if (jSplitPaneDividerLoc != null ) {
    
     	    int loc = Integer.parseInt(jSplitPaneDividerLoc.getCvalue());
     	    java.awt.Dimension min = getJPtreePanel().getMinimumSize();
     	    if (loc < min.getSize().width)
     	    	loc = min.getSize().width;
         	getJSplitTreePane().setDividerLocation( loc );
         }
     }
    

}
/**
*

  • Description : this is used to keep in synch selections
  • Assumptions : None
  • @param harvestSale
  • Oct. 12, 2021 10:29:12 a.m.
  • @author Adrian Faur
    */
    public void selectFertilizationRecipe(FertilizationRecipe fertilizationRecipe) {
    if (fertilizationRecipe == null) {
    return;
    }
    GenericObjectEditorPanel editorPanel = getEditorByName(this.getJPfertilizationRecipe().getName());
    if (editorPanel != null && editorPanel.isPostOpenCalled()) {
    if (editorPanel.getPo() != null && editorPanel.getPo().isSameRow(fertilizationRecipe) ) {
    return;
    }
    editorPanel.selectObject(fertilizationRecipe, false);
    }

}
/**
*

  • Description :

  • Assumptions : None

  • @param sectorDtlFertRecipeDtl

  • Feb. 21, 2022 12:12:46 p.m.

  • @author Adrian Faur
    /
    public void selectFertilizerRecipeDetail(SectorDtlFertRecipeDtl sectorDtlFertRecipeDtl) {
    GenericObjectEditorPanel editorPanel = getEditorByName(this.getJPfertilizerRecipeDetail().getName());
    if ( sectorDtlFertRecipeDtl != null && editorPanel != null && editorPanel.isPostOpenCalled()) {
    try {
    editorPanel.selectObject(sectorDtlFertRecipeDtl.getFertilizerRecipeDetail(), true);
    refreshScreenForFertilizationRecipeDetail();
    } catch (Exception e) {
    UiErrorHandlerService.handle( this, e, null, true );
    }
    }
    }
    /
    *

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/29/2020 6:24:33 PM)
    */
    public void setEnablements() {

    try {
    boolean isFertilizationRecipe =isFertilizationRecipe();
    boolean isFarmAccountingYear = getFarmAccountingYear() != null;
    boolean isFertilizerRecipeDetail = getFertilizerRecipeDetail() != null;

     this.getJTabbedPane1().setEnabledAt(0, isFarmAccountingYear  ) ;
     this.getJTabbedPane1().setEnabledAt(1, isFertilizationRecipe  ) ;
     this.getJTabbedPane1().setEnabledAt(2, isFertilizationRecipe ) ;
    
     
     getPBrecipeFileView().setEnabled(isFertilizationRecipe);
     getPBRecipeTargetSectorPanel().setEnabled(this.getFertilizerRecipeDetail() != null && this.getFertilizerRecipeDetail().isPersistent());
    

    } catch (Exception e) {
    UiErrorHandlerService.handle( this, e, null, true );
    }

    // disable buttons in worker editor - this also because this is first tab and first tab shows anyway even if not selectable....
    // GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPworkerSummary().getName() );
    // if (editor != null && editor.isPreOpenCalled()) {
    // editor.setEnableDelete( false );
    // }
    //
    // editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJProwSummary().getName() );
    // if (editor != null && editor.isPreOpenCalled()) {
    // editor.setEnableDelete( false );
    // }
    //
    // editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPreceptionSummary().getName() );
    // if (editor != null && editor.isPreOpenCalled()) {
    // editor.setEnableDelete( false );
    // }
    //
    // editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPcontainerSummary().getName() );
    // if (editor != null && editor.isPreOpenCalled()) {
    // editor.setEnableDelete( false );
    // }
    //
    // editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPclientSummary().getName() );
    // if (editor != null && editor.isPreOpenCalled()) {
    // editor.setEnableDelete( false );
    // }

    this.editorButtonsEnablements();

}
/**
*

  • Description :
  • Assumptions : None
  • @param newFarmAccountingYear
  • Jun. 19, 2021 4:34:20 p.m.
  • @author Adrian Faur
    */
    public void setFarmAccountingYear(FarmAccountingYear newFarmAccountingYear) {
    farmAccountingYear = newFarmAccountingYear;
    // set accounting yer for Excell report generation directory
    java.util.Enumeration enumeration = myGenericEditors.keys();
    while(enumeration.hasMoreElements()) {
    String editorName = enumeration.nextElement();
    GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(editorName );
    editor.setYearData(farmAccountingYear.getAccountingYear());
    }

}
/**
*

  • Description :

  • Assumptions : None

  • Mar. 6, 2021 11:41:19 p.m.

  • @author Adrian Faur
    /
    public void setFertilizationRecipe(FertilizationRecipe newFertilizationRecipe) {
    this.fertilizationRecipe = newFertilizationRecipe;
    }
    /
    *

  • Description :

  • Assumptions : None

  • @param postOpenCallback

  • Apr. 24, 2021 2:02:29 p.m.

  • @author Adrian Faur
    /
    public void setPostOpenCallback(Callback postOpenCallback) {
    this.postOpenCallback = postOpenCallback;
    }
    /
    *

  • Set the selectionModelTRcompanies to a new value.

  • @param newValue javax.swing.tree.TreeSelectionModel
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    private void setselectionModelTRlist(javax.swing.tree.TreeSelectionModel newValue) {
    if (ivjselectionModelTRlist != newValue) {
    try {
    /
    Stop listening for events from the current object */
    if (ivjselectionModelTRlist != null) {
    ivjselectionModelTRlist.removeTreeSelectionListener(this);
    }
    ivjselectionModelTRlist = newValue;

     	/* Listen for events from the new object */
     	if (ivjselectionModelTRlist != null) {
     		ivjselectionModelTRlist.addTreeSelectionListener(this);
     	}
     	connPtoP1SetSource();
     	// user code begin {1}
     	// user code end
     } catch (java.lang.Throwable ivjExc) {
     	// user code begin {2}
     	// user code end
     	handleException(ivjExc);
     }
    

    };
    // user code begin {3}
    // user code end
    }
    /**

  • Description : Called when tree selection changes

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 2:23:39 PM)

  • @param newYearFertRecipeTreeNodeWrapper com.ptracker.ui.frames.be.YearFertRecipeTreeNodeWrapper
    */
    public void setYearFertRecipeTreeNodeWrapper(YearFertRecipeTreeNodeWrapper newYearFertRecipeTreeNodeWrapper) {

    // try to speed it up , avoid reloading if not necessary
    FertilizationRecipe oldFertilizationRecipe =null;
    FertilizationRecipe newFertilizationRecipe =null;

    FarmAccountingYear oldfarmAccountingYear=null;
    FarmAccountingYear newfarmAccountingYear = null;

    // !!!!! break infinite loading cycle (this happens for sorted Jtables - in this case, Jtable reselects the old object on reload, which triggers a setLoadDataCallback bellow, which again trigger a reselct on tree... and so on)
    // important to use toLabel() because at sorting tree gets reloaded with new objects and cannot just compare objects.equals()
    try {
    if ( yearFertRecipeTreeNodeWrapper != null && newYearFertRecipeTreeNodeWrapper != null && yearFertRecipeTreeNodeWrapper.equals(newYearFertRecipeTreeNodeWrapper) ) {
    this.yearFertRecipeTreeNodeWrapper = newYearFertRecipeTreeNodeWrapper;

     	this.setFertilizationRecipe(this.yearFertRecipeTreeNodeWrapper.getFertilizationRecipe() );
     	this.setFarmAccountingYear(this.yearFertRecipeTreeNodeWrapper.getFarmAccountingYear());
     	return;
     } else {
     	newFertilizationRecipe = newYearFertRecipeTreeNodeWrapper != null ? newYearFertRecipeTreeNodeWrapper.getFertilizationRecipe() : null;
     	oldFertilizationRecipe = yearFertRecipeTreeNodeWrapper != null ? yearFertRecipeTreeNodeWrapper.getFertilizationRecipe() : null ;
     	
     	newfarmAccountingYear = newYearFertRecipeTreeNodeWrapper != null ? newYearFertRecipeTreeNodeWrapper.getFarmAccountingYear() : null;
     	oldfarmAccountingYear = yearFertRecipeTreeNodeWrapper != null ? yearFertRecipeTreeNodeWrapper.getFarmAccountingYear() : null ;
     	
     }
    

    } catch (Exception e1) {
    UiErrorHandlerService.handle( this, e1, null, true );
    }

    this.yearFertRecipeTreeNodeWrapper = newYearFertRecipeTreeNodeWrapper;

    if (newYearFertRecipeTreeNodeWrapper == null) {
    getTRlist().clearSelection();
    setEnablements();
    return;
    }

    // all nodes know about a parent node,
    this.setFertilizationRecipe(this.yearFertRecipeTreeNodeWrapper.getFertilizationRecipe() );
    this.setFarmAccountingYear(this.yearFertRecipeTreeNodeWrapper.getFarmAccountingYear());

    //-----------------------------------------------------------------
    // initiate job workers loading for this job
    // GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPyearSaleHistory().getName());
    // try {
    // editor.setLoadDataCallback( new Callback(JdbcService.class, "retrieveAllHarvestSalesForYear", new Object[] {null, this.getFarmAccountingYear().getAccountingYear()}) );
    // } catch (Exception e) {
    // UiErrorHandlerService.handle( this, e, null, true );
    // }

    // select data in editor
    //GenericObjectEditorPanel jobPlanningEditorPanel = (GenericObjectEditorPanel)this.myGenericEditors.get( "mainEditor" );
    //editor.setSubjectObject(this.getHarvestSale());

// //----------------------Workers assigned rows -------------------------------------
// if (yearFertRecipeTreeNodeWrapper.isHarvestSalePlantationWorker()) {
// editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPjobWorkerRow().getName());
// // where = BusinessMemberAccount.MAP_INFO.FLD_COMPANY_ID +"=" + this.getCompany().getBeId();
// // editor.setWhereClause(where);
// try {
// editor.setLoadDataCallback( new Callback(this.getHarvestSalePlantationWorker(), "getJobWorkerRows") );
// editor.setRefreshDataCallback(
// new CallbackList( new Callback[]
// {
// new Callback( this.getHarvestSalePlantationWorker(), "setJobWorkerRows", new Vector[] {null} ) , // reset it
// new Callback(this.getHarvestSalePlantationWorker(), "getJobWorkerRows" ) // refresh it from DB
// }
// )
// );
// } catch (Exception e) {
// UiErrorHandlerService.handle( this, e, null, true );
// }
// }
//
boolean reloadIt = ! ( oldFertilizationRecipe != null && newFertilizationRecipe != null && oldFertilizationRecipe.uniqueSignature().equals(newFertilizationRecipe.uniqueSignature()) ) ;
boolean yearReloadIt = ! ( oldfarmAccountingYear != null && newfarmAccountingYear != null && oldfarmAccountingYear.uniqueSignature().equals(newfarmAccountingYear.uniqueSignature()) ) ;

if (getFarmAccountingYear() != null && yearReloadIt ) {

	GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPfertilizationRecipe().getName());
	try {
		editor.setLoadDataCallback( new Callback(JdbcService.class, "retrieveAllFertilizationRecipeForYear", new Object[] {null, this.getFarmAccountingYear().getAccountingYear()}) );
	} catch (Exception e) {
		UiErrorHandlerService.handle( this, e, null, true );
	}
	
}


if (getFarmAccountingYear() != null && getFertilizationRecipe() != null && (reloadIt || yearReloadIt) ) {
			
	GenericObjectEditorPanel editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPfertilizerRecipeDetail().getName());
	try {
		editor.setLoadDataCallback( new Callback(this.getFertilizationRecipe(), "getFertilizerRecipeDetails") );
		editor.setRefreshDataCallback( 
				new CallbackList(   new Callback[]		
						{
							new Callback( this.getFertilizationRecipe(), "setFertilizerRecipeDetails", new Vector[] {null} ) ,   // reset it
							new Callback(this.getFertilizationRecipe(), "getFertilizerRecipeDetails" )                              // refresh it from DB
						}
				)
		);
	} catch (Exception e) {
		UiErrorHandlerService.handle( this, e, null, true );
	}
	
	
	// ------ desfasuator fertilizare pentru reteta aleasa
	editor = (GenericObjectEditorPanel) this.myGenericEditors.get(getJPrecipeApplications().getName());
	try {
		editor.setLoadDataCallback( new Callback(this.getFertilizationRecipe(), "getSectorDtlFertRecipeDtls") );
		editor.setRefreshDataCallback( 
				new CallbackList(   new Callback[]		
						{
							new Callback( this.getFertilizationRecipe(), "resetCachedFertilizerRecipeDetails"  ) ,   // reset parent relation
							new Callback(this.getFertilizationRecipe(), "getSectorDtlFertRecipeDtls" )  // refresh it from DB
						}
				)
		);
	} catch (Exception e) {
		UiErrorHandlerService.handle( this, e, null, true );
	}
	
}

GenericObjectEditorPanel recipePanel = (GenericObjectEditorPanel)this.myGenericEditors.get(this.getJPfertilizationRecipe().getName());
recipePanel.selectObject( this.getFertilizationRecipe(), true);

}
/**

  • Method to handle events for the TreeSelectionListener interface.

  • @param e javax.swing.event.TreeSelectionEvent
    /
    /
    WARNING: THIS METHOD WILL BE REGENERATED. /
    public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
    // user code begin {1}
    // user code end
    if (e.getSource() == getselectionModelTRlist())
    connEtoC1(e);
    // user code begin {2}
    // user code end
    }
    /
    *

  • Comment
    */
    public void xCBexpand_ActionPerformed() {

    boolean expand = this.getCBexpand().isSelected();

    if (expand) {
    // we show all tree expanded
    //for (int i = 0; i < this.getTRCompanies().getRowCount(); i++) {
    //this.getTRCompanies().expandRow(i);
    //}

     OVSwingUtilities.setTreeExpandedState(this.getTRlist(), true);
    

    } else {

     // colapse again, when expanded all company subcomponents are already expanded
     //for (int i = 0; i < this.getTRCompanies().getRowCount(); i++) {
     	//this.getTRCompanies().collapseRow(i);
     //}
    
     OVSwingUtilities.setTreeExpandedState(this.getTRlist(), false);
    

    }

    return;
    }
    /**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 6:25:31 PM)

  • @throws SQLException
    */
    public void xConfigureFertilizationRecipe(OVPanel hostPanel) throws SQLException {

    Vector columns;
    ObjectTableModel objectsModel;
    ObjectComboModel cm1;
    ObjectComboModel cm2;
    ObjectComboModel cm3;
    Hashtable editors;
    Hashtable renderers;
    PersistentObjectEditTableModel persistentObjectEditTableModel;
    GenericObjectEditorPanel editorPanel;

    JDBSession session = null;
    try {
    // this session will be released on model finalize ... do not release bellow....!!!
    session = JDBSystem.acquireConnection();
    } catch (ObjectPoolException e) {
    UiErrorHandlerService.handle( this, e, null, true );
    }

    columns = new Vector();

    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(FertilizationRecipe.MAP_INFO.ATTR_accountingYear_GETTER) }, "An" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(FertilizationRecipe.MAP_INFO.ATTR_title_GETTER) }, "Titlu" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(FertilizationRecipe.MAP_INFO.ATTR_pathName_GETTER) }, "Fisier Reteta" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(FertilizationRecipe.MAP_INFO.ATTR_description_GETTER) }, "Descriere" )
    );

    objectsModel = new ObjectTableModel(columns, session);

    editors = new Hashtable(4);
    renderers = new Hashtable(1);

    // capitalize first letter
    editors.put( FertilizationRecipe.MAP_INFO.ATTR_title, new StringFormatterCellEditor(
    new javax.swing.JFormattedTextField() , FertilizationRecipe.MAP_INFO.MAP_title(), null, null, null, null, true )
    );
    // capitalize first letter
    editors.put( FertilizationRecipe.MAP_INFO.ATTR_description, new StringFormatterCellEditor(
    new javax.swing.JFormattedTextField() , FertilizationRecipe.MAP_INFO.MAP_description(), null, null, null, null, true )
    );

    // client order button editor
    // we don't know the table and actions yet, will set it later after editor panel is built
    final com.objectview.frame.ui.ButtonObjectCellEditorAndRenderer buttonColumn = new com.objectview.frame.ui.ButtonObjectCellEditorAndRenderer(null, null, "Asociaza Fisier Reteta",null, null, null);
    buttonColumn.setMnemonic(java.awt.event.KeyEvent.VK_N); // Alt+N when selected
    editors.put( FertilizationRecipe.MAP_INFO.ATTR_pathName, buttonColumn);
    renderers.put( FertilizationRecipe.MAP_INFO.ATTR_pathName, buttonColumn);

    //public PersistentObjectEditTableModel(JDBClassMap classMap, String[] javaAttributeNames, String[] attributeHeaderNames, java.util.Hashtable tableCellEditorByAttributeName, java.util.Hashtable tableCellRendererByAttributeName, String[] disabledAttributeNames, String[] addOnlyUiAttributeNames, Hashtable<String, Callback> editableConditions) {
    persistentObjectEditTableModel = new PersistentObjectEditTableModel(
    JDBSystem.getInstance().getMapForClass(FertilizationRecipe.class)
    ,new String[] {
    FertilizationRecipe.MAP_INFO.ATTR_title,
    FertilizationRecipe.MAP_INFO.ATTR_pathName,
    FertilizationRecipe.MAP_INFO.ATTR_description }
    , objectsModel.getHeaders(1,2,3)
    , editors
    ,renderers
    ,null // disabled
    ,null // addOnly
    );

    editorPanel = new GenericObjectEditorPanel(
    "Definitie reteta fertilizare.\nCa titlu folositi o scurta descriere care sa evidentieze aceasta reteta. Daca reteta este primita de la un consultant, puteti specifica si fisierul cu descrierea retetei trimis de catre firma consultanta."
    ,JDBSystem.getInstance().getMapForClass(FertilizationRecipe.class)
    ,objectsModel
    ,persistentObjectEditTableModel
    //,"USER_ROLE_TYPE<>'ROOT'"
    );
    editorPanel.setUniqueName("FertilizationRecipe.EDITOR");
    editorPanel.setAsMainEditor();

    //editorPanel.setHiddenActions(GenericObjectEditorPanel.HIDE_ADD +GenericObjectEditorPanel.HIDE_SAVE+GenericObjectEditorPanel.HIDE_DELETE+ GenericObjectEditorPanel.HIDE_CLONE +GenericObjectEditorPanel.HIDE_SEARCH);

    editorPanel.setPrintingTitle("Reteta fertilizare ");

    //initialize summary (numbering starts from column 0)
    // editorPanel.setSummaryColumns(new int[] {6,9,10,11});

// Hashtable summaryCallbacks = new Hashtable ();
// summaryCallbacks.put(0, new Callback( editorPanel, "getObjectsSizeString" ) );
// editorPanel.setSummaryColumnsCallbacks(summaryCallbacks);

//editorPanel.setOrderByClause( JobPlanning.MAP_INFO.FLD_IN_PROGRESS_IND + " DESC  ," +FarmJob.MAP_INFO.FLD_JOB_DATE  );	

// set call backs 

//editorPanel.setPreSaveCallBack(
// new Callback(
// this, "preSaveHarvestReceptionReportCallback", editorPanel, new GetterWrapper[] { new GetterWrapper("getPo" ) }
// )
//);

editorPanel.setNewObjectCallback(
new Callback( this, "instantiateFertilizationRecipeCallback" )
);

editorPanel.setChangedSelectionCallBack(
new CallbackList( new Callback[] {

	new Callback(
					this, "xExactSelectTreeNodeFor", editorPanel, new GetterWrapper[] { new GetterWrapper("getPo") }   
	),

// new Callback(
// this,
// "xLoadReceptionReportForCurrentSale"
// ),
new Callback( mySelf(),"setEnablements" )

	})

);

editorPanel.setPostSaveCallBack(
new Callback(
this,
"refreshAllData"
)) ;

//editorPanel.setPostSaveCallBack(
// new CallbackList ( new Callback[] {
//
// new Callback(
// new Callback( this, "getEditorByName", new Object[] { getJPclientSales().getName() } ),
// "xPBrefresh_ActionPerformed"
// ),
// new Callback(
// new Callback( this, "getEditorByName", new Object[] { getJPyearSaleHistory().getName() } ),
// "dbRefreshCurrentObject",
// new Object[] {null}
// )
//
// }
//));

//-----------START CODING   button editor -------------------------------------------------------------------------------------------------------------------
class MyButtonAction extends  AbstractAction {
		ButtonObjectCellEditorAndRenderer button;
	
		public MyButtonAction (ButtonObjectCellEditorAndRenderer button) {
			super();
			this.button = button;
		}
		
		// the ActionEvent is created in ButtonCellEditorAndRenderer, and we constructed it with these parameters:
		// ActionEvent event = new ActionEvent(table, ActionEvent.ACTION_PERFORMED, "" + row);

	    public void actionPerformed(java.awt.event.ActionEvent e)	    {

	    	javax.swing.JFileChooser fc = new javax.swing.JFileChooser();
	    	fc.setFileSelectionMode(fc.FILES_ONLY);
	    	fc.setDialogType(JFileChooser.OPEN_DIALOG);
	    	fc.setDialogTitle( "Alege Fisierul Reteta");
	    	//fc.setSize(800, 600); // !! NOT WORKING
	    	fc.setPreferredSize(new Dimension(600, 480)); 
	    	String editorValue = (String) button.getCellEditorValue();
	    	
	    	if (editorValue != null && editorValue.trim().length() > 0 ) {
	    		fc.setSelectedFile( new File (editorValue.trim()));
	    	} else {
	    		String dir = PtrackerSystem.getSystemParameter( PtrackerSystem.APP_DIR_ROOT ) +"/ ";  // trick: one space will be an invalid file but will enter into directory

	    		fc.setSelectedFile( new File ( dir));  
	    	}
	    	
	    	SwingUtilities.invokeLater(new Runnable(){
				public void run() {
					int retval = fc.showOpenDialog(mySelf());
					
			    	if(retval == JFileChooser.APPROVE_OPTION) {
			    	    File theFile = fc.getSelectedFile();
			    	    if(theFile != null) {
			    			if( !theFile.isDirectory()) {
			    				try {
									button.setPersistentAttributeValue( FertilizationRecipe.MAP_INFO.ATTR_pathName, fc.getSelectedFile().getAbsolutePath() );
								} catch (Exception e1) {
									mySelf().handleException(e1);;
								}
			    			}
			    	    }
			    	}						
				}});
				
			
	    }
	    
	} // end button click action

//action to set the editor value
class EditorValueAction extends  AbstractAction {
	ButtonObjectCellEditorAndRenderer button;

	public EditorValueAction (ButtonObjectCellEditorAndRenderer button) {
		super();
		this.button = button;
	}

 public void actionPerformed(java.awt.event.ActionEvent e)   {
     //GenericObjectEditorTable table = (GenericObjectEditorTable)e.getSource();
     //Integer modelRow = Integer.valueOf( e.getActionCommand() );
     // get business object from button action cache ( see cacheBusinessObject in button class)
	 FertilizationRecipe buttonObj = (FertilizationRecipe) this.getValue(ButtonObjectCellEditorAndRenderer.BUSINESS_OBJECT_ACTION_KEY);
     if (buttonObj != null && buttonObj.getPathName() != null) {
     	button.setEditorValue(buttonObj.getPathName());
     } else {
     	button.setEditorValue("");
     }
 }
};

//action to set the renderer value
class RendererValueAction extends  AbstractAction {
	ButtonObjectCellEditorAndRenderer button;

	public RendererValueAction (ButtonObjectCellEditorAndRenderer button) {
		super();
		this.button = button;
	}

 public void actionPerformed(java.awt.event.ActionEvent e)
 {
     //GenericObjectEditorTable table = (GenericObjectEditorTable)e.getSource();
     //Integer modelRow = Integer.valueOf( e.getActionCommand() );
     // get business object from button action cache ( see cacheBusinessObject in button class)
	 FertilizationRecipe buttonObj = (FertilizationRecipe) this.getValue(ButtonObjectCellEditorAndRenderer.BUSINESS_OBJECT_ACTION_KEY);
 	
     if (buttonObj != null && buttonObj.getPathName() != null) {
     	button.setRendererValue(buttonObj.getPathName());
     } else {
     	button.setRendererValue("");
     }


 }
};


//set call back for businessObject. This is the callback called to retrieve the business object in button class
buttonColumn.setBusinessObjectRetrieverCallback(    //Object target, String methodName, Object source, GetterWrapper[] anArrayWithGetterWrappers
		new Callback(
		editorPanel, "getPo", new Object[0] 
	));
//set table  
buttonColumn.setTable(editorPanel.getTBEditor());
//set button actions
buttonColumn.setAction(  new MyButtonAction(buttonColumn)	);
buttonColumn.setEditorValueAction(  new EditorValueAction(buttonColumn)	);
buttonColumn.setRendererValueAction(  new RendererValueAction(buttonColumn)	);



// so we can retrieve it later easily (instead of finding it by name... actually its name is not constant but includes map name....)
this.myGenericEditors.put(getJPfertilizationRecipe().getName(), editorPanel );

// important ! this editor has a special meaning in reload - ( reload sorted tree if any, or if this is first load then load tree)  ; add it again under this name for reference 
//this.myGenericEditors.put("mainEditor", editorPanel );

getJPfertilizationRecipe().add(editorPanel, "Center");
getJPfertilizationRecipe().revalidate();

}
/**
*

  • Description :

  • Assumptions : None

  • @param hostPanel

  • @throws SQLException

  • Feb. 14, 2022 12:42:14 p.m.

  • @author Adrian Faur
    */
    public void xConfigureFertilizerRecipeDetail(OVPanel hostPanel) throws SQLException {

    GenericObjectEditorPanel editorPanel = GenericObjectEditorConfigurations.configureFertilizerRecipeDetail(hostPanel, true);

    editorPanel.setPreSaveCallBack(
    new Callback(
    FertilizerRecipeDetail.class,
    "preSaveFertilizerRecipeDetailCallback",
    new Callback[] {
    new Callback(editorPanel, "getPo"),
    new Callback(mySelf(), "getFertilizationRecipe" )
    }
    )
    );

    editorPanel.setChangedSelectionCallBack(
    new CallbackList( new Callback[] {
    new Callback( mySelf(),"setEnablements" ),
    new Callback( mySelf(),"refreshScreenForFertilizationRecipeDetail" )
    })
    );

    // so we can retrieve it later easily (instead of finding it by name... actually its name is not constant but includes map name....)
    this.myGenericEditors.put(getJPfertilizerRecipeDetail().getName(), editorPanel );

    // important ! this editor has a special meaning in reload - ( reload sorted tree if any, or if this is first load then load tree) ; add it again under this name for reference
    //this.myGenericEditors.put("mainEditor", editorPanel );

    getJPfertilizerRecipeDetail().add(editorPanel, "Center");
    getJPfertilizerRecipeDetail().revalidate();

}

/**
*

  • Description :

  • Assumptions : None

  • Mar. 17, 2023 7:19:53 p.m.

  • @author Adrian Faur

  • @throws SQLException

  • @throws ObjectPoolException

  • @throws ObjectAccessException

  • @throws RollbackException
    */
    public void refreshScreenForFertilizationRecipeDetail() throws RollbackException, ObjectAccessException, ObjectPoolException, SQLException {
    FertilizerRecipeDetail fertilizerRecipeDetail = getFertilizerRecipeDetail();

    if (fertilizerRecipeDetail != null && fertilizerRecipeDetail.isPersistent()) {
    fertilizerRecipeDetail.refresh();
    GenericObjectEditorPanel editorPanel = getEditorByName(getJPfertilizerRecipeDetail().getName());
    if (editorPanel != null && editorPanel.isPostOpenCalled() ) {
    editorPanel.dbRefreshCurrentObject(fertilizerRecipeDetail);
    }

     if (fertilizerRecipeDetail.getTargetPercent() == null || fertilizerRecipeDetail.getTargetPercent().intValue() == 0) {
     	getTFpercent().setText("100%");
     } else {
     	getTFpercent().setText(   fertilizerRecipeDetail.getTargetPercent().toString() + "%");
     }
    

    } else {
    getTFpercent().setText("");
    }
    }

/**
*

  • Description : fertilizari efectuate pentru un fertilizant din retetar

  • Assumptions : None

  • @param hostPanel

  • @throws SQLException

  • Feb. 21, 2022 10:50:05 a.m.

  • @author Adrian Faur
    */
    public void xConfigureRecipeApplications(OVPanel hostPanel) throws SQLException {

    Vector columns;
    ObjectTableModel objectsModel;
    ObjectComboModel cm1;
    ObjectComboModel cm2;
    ObjectComboModel cm3;
    Hashtable editors;
    Hashtable renderers;
    PersistentObjectEditTableModel persistentObjectEditTableModel;
    GenericObjectEditorPanel editorPanel;

    JDBSession session = null;
    try {
    // this session will be released on model finalize ... do not release bellow....!!!
    session = JDBSystem.acquireConnection();
    } catch (ObjectPoolException e) {
    UiErrorHandlerService.handle( this, e, null, true );
    }

    columns = new Vector();

    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getSectorJobDetail", new Object[] {session}),
    new GetterWrapper("getFarmJob", new Object[] {session}),
    new GetterWrapper("getName" )
    }, "Lucrare" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getSectorJobDetail", new Object[] {session}),
    new GetterWrapper("getPlantationSector", new Object[] {session}),
    new GetterWrapper("toShortName", new Object[] {session})
    }, "Sector" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getSectorJobDetail", new Object[] {session}),
    new GetterWrapper("getPlantationSector", new Object[] {session}),
    new GetterWrapper(PlantationSector.MAP_INFO.ATTR_numberOfPlants_GETTER)
    }, "Nr Plante" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getSectorJobDetail", new Object[] {session}),
    new GetterWrapper("getPlantationSector", new Object[] {session}),
    new GetterWrapper(PlantationSector.MAP_INFO.ATTR_area_GETTER)
    }, "Suprafata" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getFertilizer", new Object[] {session}),
    new GetterWrapper(Fertilizer.MAP_INFO.ATTR_name_GETTER) }, "Fertilizant" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerRecipeDetailId_GETTER) }, "Id Retetar" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getFertilizerTargetUnits", new Object[] {session}),
    new GetterWrapper(FertilizerTargetUnits.MAP_INFO.ATTR_description_GETTER) }, "UM Aplicare" )
    );

    ObjectColumnConfiguration colConfig = new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_dividerFactor_GETTER)
    },
    "SubAplicari" ,
    null,
    null,
    new ObjectCellRenderer( )
    ) ;
    colConfig.setColorCallback( new Callback(null, "getStatusColor", new Callback[] {new Callback(this, "getBackground"), new Callback(session)} ));
    columns.addElement( colConfig );

    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_computedUnits_GETTER) }, "Cant. Retetar" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_appliedUnits_GETTER) }, "Cant. Aplicata" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getFertilizer",new Object[] {session} ) ,
    new GetterWrapper("getFertilizerStock",new Object[] {session} ) ,
    new GetterWrapper(FertilizerStock.MAP_INFO.ATTR_unitsOnPremises_GETTER) }, "Cant. Stoc" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getAppliedCounter", new Object[] {session} ) }, "Index Aplicare" )
    );
    columns.addElement( new ObjectColumnConfiguration(
    new GetterWrapper[] {
    new GetterWrapper("getFertilizerRecipeDetail", new Object[] {session} ),
    new GetterWrapper("getRemainingCounter" ),

     	}, "Aplicari Ramase" ) 
    

    );

    objectsModel = new ObjectTableModel(columns, session);

    editors = new Hashtable(4);
    renderers = new Hashtable(1);

    cm1 = new ObjectComboModelExtended(
    JDBSystem.getInstance().getMapForClass(PlantationSector.class),
    new GetterWrapper[] { new GetterWrapper(PlantationSector.MAP_INFO.ATTR_plantationSectorId_GETTER), new GetterWrapper(PlantationSector.MAP_INFO.ATTR_sectorName_GETTER), new GetterWrapper( "getFieldName") },
    new Callback (PlantationSector.class, "retrieveAll", new Object[] {session}),
    false
    );
    editors.put(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_plantationSectorId, new ObjectCellEditor( new JComboBox(cm1) ) );

    cm2 = new ObjectComboModelExtended(
    JDBSystem.getInstance().getMapForClass(Fertilizer.class),
    new GetterWrapper[] { new GetterWrapper(Fertilizer.MAP_INFO.ATTR_fertilizerCd_GETTER), new GetterWrapper(Fertilizer.MAP_INFO.ATTR_name_GETTER) },
    new Callback (mySelf(), "getCurrentYearRecipeFertilizers", new Object[] {session} ),
    false
    );

    editors.put(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerCd, new ObjectCellEditor( new JComboBox(cm2) ) );

    // recipe detail button editor
    // we don't know the table and actions yet, will set it later after editor panel is built
    final com.objectview.frame.ui.ButtonObjectCellEditorAndRenderer buttonColumn = new com.objectview.frame.ui.ButtonObjectCellEditorAndRenderer(null, null, "Asociaza Fertilizant Reteta",null, null, null);
    buttonColumn.setMnemonic(java.awt.event.KeyEvent.VK_N); // Alt+N when selected
    editors.put( SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerRecipeDetailId, buttonColumn);
    renderers.put( SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerRecipeDetailId, buttonColumn);

    //public PersistentObjectEditTableModel(JDBClassMap classMap, String[] javaAttributeNames, String[] attributeHeaderNames, java.util.Hashtable tableCellEditorByAttributeName, java.util.Hashtable tableCellRendererByAttributeName, String[] disabledAttributeNames, String[] addOnlyUiAttributeNames, Hashtable<String, Callback> editableConditions) {
    persistentObjectEditTableModel = new PersistentObjectEditTableModel(
    JDBSystem.getInstance().getMapForClass(SectorDtlFertRecipeDtl.class)
    ,new String[] {
    SectorDtlFertRecipeDtl.MAP_INFO.ATTR_plantationSectorId,
    SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerCd,
    SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerRecipeDetailId
    }
    , new String[] {"Sectorul Fertilizat","Fertilizantul Aplicat","Instructiunea Retetar Aplicata" } //objectsModel.getHeaders(3,4,5,6,7)
    , editors
    ,renderers
    , null //new String[] { SectorDtlFertRecipeDtl.MAP_INFO.ATTR_computedUnits, SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerTargetUnitsCd } // disabled
    ,null
    );

    editorPanel = new GenericObjectEditorPanel(
    "Detalierea lucrarilor de fertilizare efectuate cu aceasta reteta.\nIndex Aplicare reprezinta numarul real calculat de aplicari efectuate in functie de marimea sectorului si de numarul de sub-aplicari efectuate pentru o aplicare(repriza) definita in retetar. Randul totalizarilor are sens doar pe tabelul filtrat dupa fertilizant."
    ,JDBSystem.getInstance().getMapForClass(SectorDtlFertRecipeDtl.class)
    ,objectsModel
    ,persistentObjectEditTableModel
    //,"USER_ROLE_TYPE<>'ROOT'"
    );
    editorPanel.setUniqueName("SectorDtlFertRecipeDtl.EDITOR");

    editorPanel.setHiddenActions(GenericObjectEditorPanel.HIDE_ADD +GenericObjectEditorPanel.HIDE_SAVE+GenericObjectEditorPanel.HIDE_DELETE+ GenericObjectEditorPanel.HIDE_CLONE +GenericObjectEditorPanel.HIDE_SEARCH);

    CallbackEnchain callbackEnchain = new CallbackEnchain( new Callback[] {
    new Callback(null, "getFertilizerRecipeDetail"),
    new Callback(null, "getFertilizationRecipe"),
    new Callback(null, "toLabel")
    });
    editorPanel.setPrintingTitle("Desfasurator Fertilizare: ", callbackEnchain);

    editorPanel.setSummaryColumns(new int[] {0,9,11 });
    Hashtable summaryCallbacks = new Hashtable ();
    summaryCallbacks.put(0, new Callback( editorPanel, "getObjectsSizeString" ) );
    editorPanel.setSummaryColumnsCallbacks(summaryCallbacks);

    editorPanel.setChangedSelectionCallBack(
    new Callback(
    this, "selectFertilizerRecipeDetail", editorPanel, new GetterWrapper[] { new GetterWrapper("getPo") }
    )
    );

    // ------------ button editor coding
    class MyButtonAction extends AbstractAction {
    ButtonObjectCellEditorAndRenderer button;

     public MyButtonAction (ButtonObjectCellEditorAndRenderer button) {
     	super();
     	this.button = button;
     }
     
     // the ActionEvent is created in ButtonCellEditorAndRenderer, and we constructed it with these parameters:
     // ActionEvent event = new ActionEvent(table, ActionEvent.ACTION_PERFORMED, "" + row);
    
     public void actionPerformed(java.awt.event.ActionEvent e)	    {
     	//GenericObjectEditorTable table = (GenericObjectEditorTable)e.getSource();
         //Integer modelRow = Integer.valueOf( e.getActionCommand() );
    
     	GenericObjectEditorPanel calledEditor=null;
     	try {
     		calledEditor = com.ptracker.backend.service.GenericObjectEditorConfigurations.configureFertilizerRecipeDetail( hostPanel , false);
     	} catch (SQLException e1) {
     		UiErrorHandlerService.handle( editorPanel.getParentWindow() , e1, null, true );
     		return;
     	}
     	
     	// only selected year allowed
     	if (getFarmAccountingYear() != null) {
     		String where = FertilizerRecipeDetail.MAP_INFO.FLD_ACCOUNTING_YEAR +"=" + getFarmAccountingYear().getAccountingYear();
     		calledEditor.setPostOpenCallback(
     				new Callback(calledEditor, "setWhereClause", new Object[] {where } )
     		);
     	}
     	
     	final GenericObjectSelectorModalFrame calledEditorFrame ;
     	CallbackList onCommitCallback =  new CallbackList(  new Callback[] {
     			// calling: button.callBusinessObjectMethod( "setPlantationWorkerId", plantationWorkerEditor.getPo().getPlantationWorkerId() )
     		new Callback(    //Object target, String methodName, Callback[] params
     				button, 
     				"callBusinessObjectMethod", 
     				new Callback[] 	{ 
     							new Callback(SectorDtlFertRecipeDtl.MAP_INFO.ATTR_fertilizerRecipeDetailId_SETTER),
     							new Callback (
     									new Callback(  calledEditor,  "getPo", new Object[0] ),
     									FertilizerRecipeDetail.MAP_INFO.ATTR_fertilizerRecipeDetailId_GETTER
     							),
     				} 
     		)
     		
     	} );
     		        	
     	if (Frame.class.isAssignableFrom(myself().getParentWindow().getClass())) {
             //java.awt.Frame owner, String title, boolean modal, GenericObjectEditorPanel editorPanel, com.objectview.util.Callback onSelectCallBack)
     		calledEditorFrame = new GenericObjectSelectorModalFrame(
     			(JFrame) myself().getParentWindow(),
     			"Alege Fertilizant conform Reteta",
     			true,
     			calledEditor,
     			onCommitCallback
     		);
     		
     	} else {
             //java.awt.Frame owner, String title, boolean modal, GenericObjectEditorPanel editorPanel, java.awt.Component onSelectReceiver, com.objectview.util.Callback onSelectCallBack)
     		calledEditorFrame = new GenericObjectSelectorModalFrame(
     			(Dialog) myself().getParentWindow(),
     			"Alege Fertilizant conform Reteta",
     			true,
     			calledEditor,
     			onCommitCallback
     		);
     	}
    
     	// set current value in the opened selector editor to be selected when frame will show up
     	// company members cannot be changed, just addede or deleted. Still before save, we would like to show what was selected if user goes back.
     	String editorValue = (String) button.getCellEditorValue();
     	if (editorValue != null && editorValue.length() > 0) {
     			try {
     					HarvestClientOrder harvestClientOrder = HarvestClientOrder.findByPrimaryKey(  new Integer(editorValue));
     					calledEditor.setSubjectObject(harvestClientOrder);
     			} catch (Exception err) {
     				UiErrorHandlerService.handle(calledEditorFrame, err, "Eroare neasteptata. Verificati legatura cu baza de date.", true);
     				return;
     			}
     	}
     	
     	// open the frame
     	SwingUtilities.invokeLater(new Runnable() { public void run() {
     		calledEditorFrame.setVisible(true);	
     	}});
     	
    
     	
     }
    

    } // end button click action

    // action to set the editor value
    class EditorValueAction extends AbstractAction {
    ButtonObjectCellEditorAndRenderer button;

    public EditorValueAction (ButtonObjectCellEditorAndRenderer button) {
    super();
    this.button = button;
    }

    public void actionPerformed(java.awt.event.ActionEvent e) {
    //GenericObjectEditorTable table = (GenericObjectEditorTable)e.getSource();
    //Integer modelRow = Integer.valueOf( e.getActionCommand() );
    // get business object from button action cache ( see cacheBusinessObject in button class)
    SectorDtlFertRecipeDtl buttonObj = (SectorDtlFertRecipeDtl) this.getValue(ButtonObjectCellEditorAndRenderer.BUSINESS_OBJECT_ACTION_KEY);
    if (buttonObj != null && buttonObj.getFertilizerRecipeDetailId() != null) {
    button.setEditorValue(buttonObj.getFertilizerRecipeDetailId().toString());
    } else {
    button.setEditorValue("");
    }
    }
    };

    // action to set the renderer value
    class RendererValueAction extends AbstractAction {
    ButtonObjectCellEditorAndRenderer button;

    public RendererValueAction (ButtonObjectCellEditorAndRenderer button) {
    super();
    this.button = button;
    }

    public void actionPerformed(java.awt.event.ActionEvent e)
    {
    //GenericObjectEditorTable table = (GenericObjectEditorTable)e.getSource();
    //Integer modelRow = Integer.valueOf( e.getActionCommand() );
    // get business object from button action cache ( see cacheBusinessObject in button class)
    SectorDtlFertRecipeDtl buttonObj = (SectorDtlFertRecipeDtl) this.getValue(ButtonObjectCellEditorAndRenderer.BUSINESS_OBJECT_ACTION_KEY);
    FertilizerRecipeDetail fertilizerRecipeDetail =null;

     if (buttonObj != null && buttonObj.getFertilizerRecipeDetailId() != null) {
     	try {
     	        	if (buttonObj.isPersistent()) {
     	        		fertilizerRecipeDetail = buttonObj.getFertilizerRecipeDetail();
     	        	} else {
     	        		fertilizerRecipeDetail = FertilizerRecipeDetail.findByPrimaryKey(buttonObj.getFertilizerRecipeDetailId());
     	        	}
     				
     	        	if (fertilizerRecipeDetail != null)
     	        		button.setRendererValue(fertilizerRecipeDetail.getFertilizer().getName() );
     	        	else 
     		        	button.setRendererValue("");
         		
     		} catch (Exception e1) {
     			UiErrorHandlerService.handle( editorPanel.getParentWindow() , e1, null, true );	
     		}
     } else {
     	//button.setEditorValue("");
     	button.setRendererValue("");
     }
    

    }
    };

    // set call back for businessObject. This is the callback called to retrieve the business object in button class
    buttonColumn.setBusinessObjectRetrieverCallback( //Object target, String methodName, Object source, GetterWrapper[] anArrayWithGetterWrappers
    new Callback(
    editorPanel, "getPo", new Object[0]
    ));
    // set table
    buttonColumn.setTable(editorPanel.getTBEditor());
    // set button actions
    buttonColumn.setAction( new MyButtonAction(buttonColumn) );
    buttonColumn.setEditorValueAction( new EditorValueAction(buttonColumn) );
    buttonColumn.setRendererValueAction( new RendererValueAction(buttonColumn) );

//----------- END button renderer -------------------------------------------------------------------------------------------------------------------
// update round summary with latest data (in case of delete record here - we don't have add nor update here, only delete and filter )

// so we can retrieve it later easily (instead of finding it by name... actually its name is not constant but includes map name....)
this.myGenericEditors.put(getJPrecipeApplications().getName(), editorPanel );

// important ! this editor has a special meaning in reload - ( reload sorted tree if any, or if this is first load then load tree)  ; add it again under this name for reference 
//this.myGenericEditors.put("mainEditor", editorPanel );

getJPrecipeApplications().add(editorPanel, "Center");
getJPrecipeApplications().revalidate();

}
/**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 1:10:08 PM)

  • @return YearFertRecipeTreeNodeWrapper

  • @param nodeObject java.lang.Object
    */
    public YearFertRecipeTreeNodeWrapper xExactSelectSubTreeNodeFor(Object nodeObject) {

    if (nodeObject == null ) {
    return null;
    }
    if (getFarmAccountingYear() == null) {
    return null;
    }

    OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
    OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();

    // first find the current node
    OVTreeNode found = rootNode.findFirstNodeForObject(new YearFertRecipeTreeNodeWrapper(getFarmAccountingYear()), OVTreeNode.EXACT_INSENSITIVE_SEARCH);
    // OVTreeNode found = rootNode.findFirstNodeForObject(getYearFertRecipeTreeNodeWrapper(), OVTreeNode.EXACT_INSENSITIVE_SEARCH);
    // then find a child for given nodeObject
    if (found != null) {
    found = found.findFirstNodeForObject(new YearFertRecipeTreeNodeWrapper(nodeObject), OVTreeNode.EXACT_INSENSITIVE_SEARCH);
    }

    if ( found != null ) {

     YearFertRecipeTreeNodeWrapper yearFertRecipeTreeNodeWrapper = (YearFertRecipeTreeNodeWrapper) found.getUserObject();
     // if already here, break infinite loop cycle
     try {
     	if ( this.getSelectedTreeNode() == null || this.getYearFertRecipeTreeNodeWrapper() == null || ! yearFertRecipeTreeNodeWrapper.toCompareString().equals(this.getYearFertRecipeTreeNodeWrapper().toCompareString() )) {
     	
     		this.setYearFertRecipeTreeNodeWrapper( yearFertRecipeTreeNodeWrapper);
     		
     		javax.swing.tree.TreePath treePath = found.getMyPathFromRoot();
     		this.getTRlist().setSelectionPath( treePath);
     		this.getTRlist().scrollPathToVisible( treePath);
    
     	}
     } catch (Exception e ) {
     	UiErrorHandlerService.handle( this, e, null, true );
     }
    
     return yearFertRecipeTreeNodeWrapper;
    

    }

    return null;
    }
    /**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 1:10:08 PM)

  • @return YearFertRecipeTreeNodeWrapper

  • @param nodeObject java.lang.Object
    */
    public YearFertRecipeTreeNodeWrapper xExactSelectTreeNodeFor(Object nodeObject) {

    if (nodeObject == null ) {
    return null;
    }
    OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
    OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();

    // walk the tree model to find the Class who's name starts with same string as "searchFor" value.

    OVTreeNode found = rootNode.findFirstNodeForObject(new YearFertRecipeTreeNodeWrapper(nodeObject), OVTreeNode.EXACT_INSENSITIVE_SEARCH);
    if ( found != null ) {

     YearFertRecipeTreeNodeWrapper yearFertRecipeTreeNodeWrapper = (YearFertRecipeTreeNodeWrapper) found.getUserObject();
     // if already here, break infinite loop cycle
     try {
     	if ( this.getSelectedTreeNode() == null || this.getYearFertRecipeTreeNodeWrapper() == null || ! yearFertRecipeTreeNodeWrapper.toCompareString().equals(this.getYearFertRecipeTreeNodeWrapper().toCompareString() )) {
     	
     		this.setYearFertRecipeTreeNodeWrapper( yearFertRecipeTreeNodeWrapper);
     		
     		javax.swing.tree.TreePath treePath = found.getMyPathFromRoot();
     		this.getTRlist().setSelectionPath( treePath);
     		this.getTRlist().scrollPathToVisible( treePath);
    
     	}
     } catch (Exception e ) {
     	UiErrorHandlerService.handle( this, e, null, true );
     }
    
     return yearFertRecipeTreeNodeWrapper;
    

    }

    return null;
    }
    /**

  • Description : Open selected invoice in PDF editor

  • Assumptions : None

  • Dec. 23, 2021 10:49:02 a.m.

  • @author Adrian Faur
    */
    public void xPBrecipeFileView_ActionPerformed() {

    GenericObjectEditorPanel editorPanel = getEditorByName(getJPfertilizationRecipe().getName());
    FertilizationRecipe fertilizationRecipe = (FertilizationRecipe) editorPanel.getPo();

    if (fertilizationRecipe != null && fertilizationRecipe.isPersistent() && fertilizationRecipe.getPathName() != null && fertilizationRecipe.getPathName().length() > 0 ) {
    try {
    FileSystemService.openFileWithAssociatedEditor( fertilizationRecipe.getPathName() );
    } catch (Exception e) {
    UiErrorHandlerService.handle(this, e, null, true);
    }
    }
    }
    /**

  • Comment
    */
    public void xPBRecipeTargetSectorPanel_ActionPerformed() {

    if (getFertilizerRecipeDetail() == null) {
    return;
    }
    OVWindowInterface parentWindow = getParentWindow();

    RecipeTargetSectorPanel panel = new RecipeTargetSectorPanel();
    panel.setFertilizerRecipeDetail(getFertilizerRecipeDetail());

    SwingUtilities.invokeLater(new Runnable() {
    public void run() {

     	try {
     		//java.awt.Image image =  	(new javax.swing.ImageIcon(getClass().getResource("/icons/size/48x48/normal/farmer-hat.jpg"))).getImage();
     		GenericPopUpFrame genericPopUpFrame  =   new GenericPopUpFrame(parentWindow, panel,  "Sectoare fertilizate pentru acest retetar (procentul de acoperire)" ,null, "/icons/size/48x48/normal/farm_field.jpg" );
     		
     		genericPopUpFrame.setOnCloseCallback(
     				new CallbackList( new Callback[] {
     					//new Callback( getFertilizerRecipeDetail(), "computeAndSaveTargetPercent" ),
     					new Callback( mySelf(), "refreshScreenForFertilizationRecipeDetail" )
     				})
     		);
     		
     		genericPopUpFrame.setVisible(true);
     		
    
     	} catch (Exception e) {
     		UiErrorHandlerService.handle(null, e, null, false);
     	}
     	  
       }
    

    });

}
/**

  • Called when tree selection changes
    */
    public void xSelectionModelTRlist_ValueChanged(javax.swing.event.TreeSelectionEvent treeSelectionEvent) {

    OVTreeNode selectedTreeNode = this.getSelectedTreeNode();
    if (selectedTreeNode != null ) {
    YearFertRecipeTreeNodeWrapper nodeWrapper = (YearFertRecipeTreeNodeWrapper) selectedTreeNode.getUserObject();
    this.setYearFertRecipeTreeNodeWrapper(nodeWrapper);
    } else {
    this.setYearFertRecipeTreeNodeWrapper(null);
    }

    setEnablements();

    return;
    }
    /**

  • Description :

  • Assumptions : None

  • @param farmAccountingYear

  • @param company

  • @return

  • Oct. 9, 2021 2:53:55 p.m.

  • @author Adrian Faur
    */

public YearFertRecipeTreeNodeWrapper xSelectTreeFor(FarmAccountingYear farmAccountingYear, FertilizationRecipe fertilizationRecipe) {

YearFertRecipeTreeNodeWrapper myNode = null;
if (farmAccountingYear != null) {
	YearFertRecipeTreeNodeWrapper treeNodeWrapper = xExactSelectTreeNodeFor(farmAccountingYear);

	if (treeNodeWrapper != null && fertilizationRecipe != null) {
		myNode = xExactSelectSubTreeNodeFor(fertilizationRecipe);
	}
}
 
//GenericObjectEditorPanel editorPanel = (GenericObjectEditorPanel) getMyGenericEditors().get(getJProwHistory().getName()  );
//editorPanel.selectObject(row, true);


return myNode;

}
/**

  • Description :

  • Assumptions : None

  • @author: Adrian Faur

  • Creation date: (12/31/2020 1:10:08 PM)

  • @return YearFertRecipeTreeNodeWrapper

  • @param searchFor java.lang.String
    */
    public YearFertRecipeTreeNodeWrapper xSelectTreeNodeFor(String searchFor) {

    OVTreeModel treeModel = (OVTreeModel) this.getTRlist().getModel();
    OVTreeNode rootNode = (OVTreeNode) treeModel.getRoot();

    // walk the tree model to find the Class who's name starts with same string as "searchFor" value.
    OVTreeNode found = rootNode.findFirstNodeLabeledWith(searchFor, OVTreeNode.EXTENDED_SEARCH);
    if ( found != null ) {

     YearFertRecipeTreeNodeWrapper yearFertRecipeTreeNodeWrapper = (YearFertRecipeTreeNodeWrapper) found.getUserObject();
    
     // if alreadyhere, break infinite loop cycle
     try {
     	if ( this.getYearFertRecipeTreeNodeWrapper() == null || ! yearFertRecipeTreeNodeWrapper.toCompareString().equals(this.getYearFertRecipeTreeNodeWrapper().toCompareString() )) {
    
     		// first this, because it might change later on callbacks	
     		this.setYearFertRecipeTreeNodeWrapper( yearFertRecipeTreeNodeWrapper);
    
     		// then this , select node
     		javax.swing.tree.TreePath treePath = found.getMyPathFromRoot();
     		this.getTRlist().setSelectionPath( treePath);
     		this.getTRlist().scrollPathToVisible( treePath);
    
     	}
     } catch (Exception e ) {
     	UiErrorHandlerService.handle( this, e, null, true );
     }
    
     return yearFertRecipeTreeNodeWrapper;
    

    }

    return null;
    }
    /**

  • Comment
    /
    public void xTFtreeSearch_KeyTyped(java.awt.event.KeyEvent keyEvent) {
    if (keyEvent.getKeyChar() == keyEvent.VK_ENTER ) {
    String searchFor = this.getTFtreeSearch().getText().trim().toUpperCase();
    xSelectTreeNodeFor(searchFor);
    }
    }
    /
    *

  • Comment
    */
    public void xTFtreeSearch_MouseClicked() {
    getTFtreeSearch().selectAll();
    }
    }

@ptziegler
Copy link
Contributor

Are you using Java 8? If so, WindowBuilder will not work. Your best bet is to update to either Java 17 or Java 21 and then adjust the execution environment on the project level.

image

@faurad
Copy link
Author

faurad commented Oct 6, 2024 via email

@ptziegler
Copy link
Contributor

Unable to load *.wbp-component.xml description.
For component com.objectview.jdb.ui.WBClassTreePanel.

I assume that's a custom contribution? Can you upload this file so that I can check what's wrong?

@ptziegler ptziegler added help wanted We need you question Further information is requested and removed help wanted We need you labels Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants