r3240 - trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart
Author: vsalaun Date: 2011-08-02 13:37:55 +0200 (Tue, 02 Aug 2011) New Revision: 3240 Url: http://chorem.org/repositories/revision/lima/3240 Log: #347 update VatChart Added: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartImportForm.jaxx trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartMovementForm.jaxx Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTable.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTableModel.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartView.jaxx trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartViewHandler.java Added: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartImportForm.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartImportForm.jaxx (rev 0) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartImportForm.jaxx 2011-08-02 11:37:55 UTC (rev 3240) @@ -0,0 +1,67 @@ +<JDialog modal="true" + defaultCloseOperation="{JDialog.DO_NOTHING_ON_CLOSE}" + onWindowClosing="performCancel();"> + + <jaxx.runtime.swing.JAXXButtonGroup id="radioButtons" javaBean='new JAXXButtonGroup()'/> + <Boolean id="addState" javaBean='true'/> + + <script> + <![CDATA[ + import org.chorem.lima.enums.VatStatementsChartEnum; + getRootPane().setDefaultButton(ok); + protected void performCancel() { + getRadioButtons().setSelectedValue(null); + dispose(); + } + ]]> + </script> + + <Table> + <row> + <cell><JLabel text='lima.charts.vatstatement.nothing' /></cell> + </row> + <row> + <cell> + <JRadioButton text='lima.charts.vatstatement.shortened' value='{VatStatementsChartEnum.SHORTENED}' buttonGroup="{getRadioButtons()}" + selected='true'/> + </cell> + </row> + <row> + <cell> + <JRadioButton text='lima.charts.vatstatement.base' value='{VatStatementsChartEnum.BASE}' buttonGroup="{getRadioButtons()}" + selected='true'/> + </cell> + </row> + <row> + <cell> + <JRadioButton text='lima.charts.vatstatement.developed' value='{VatStatementsChartEnum.DEVELOPED}' buttonGroup="{getRadioButtons()}" + selected='true'/> + </cell> + </row> + <row> + <cell> + <JRadioButton text='lima.importexport.import' value='{VatStatementsChartEnum.IMPORT}' buttonGroup="{getRadioButtons()}" + selected='true'/> + </cell> + </row> + <row> + <cell> + <JCheckBox id='deleteVatStatementChart' text='lima.vatstatement.delete' selected='false'/> + </cell> + </row> + <row> + <cell> + <Table> + <row> + <cell fill="none"> + <JButton text="lima.common.cancel" onActionPerformed="performCancel()"/> + </cell> + <cell fill="none"> + <JButton id="ok" text="lima.common.ok" onActionPerformed="dispose()"/> + </cell> + </row> + </Table> + </cell> + </row> + </Table> +</JDialog> \ No newline at end of file Added: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartMovementForm.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartMovementForm.jaxx (rev 0) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartMovementForm.jaxx 2011-08-02 11:37:55 UTC (rev 3240) @@ -0,0 +1,76 @@ +<JDialog modal="true" + defaultCloseOperation="{JDialog.DO_NOTHING_ON_CLOSE}" + onWindowClosing="performCancel();"> + + <org.chorem.lima.entity.VatStatement id="vatStatement" javaBean='null'/> + <Boolean id="addState" javaBean='true'/> + + <script> + <![CDATA[ + + import org.chorem.lima.entity.VatStatementImpl; + + getRootPane().setDefaultButton(ok); + + protected void performCancel() { + setVatStatement(null); + dispose(); + } + + ]]> + </script> + + <Table> + + <row> + <cell fill="horizontal"> + <JLabel text="lima.vatstatement.label"/> + </cell> + <cell fill="horizontal"> + <JTextField id="labelTextField" text="{getVatStatement().getLabel()}"/> + <javax.swing.text.Document javaBean="getLabelTextField().getDocument()" + onInsertUpdate='getVatStatement().setLabel(getLabelTextField().getText())' + onRemoveUpdate='getVatStatement().setLabel(getLabelTextField().getText())' /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JLabel text="lima.vatstatement.boxname"/> + </cell> + <cell fill="horizontal"> + <JTextField id="boxNameTextField" text="{getVatStatement().getBoxName()}"/> + <javax.swing.text.Document javaBean="getBoxNameTextField().getDocument()" + onInsertUpdate='getVatStatement().setBoxName(getBoxNameTextField().getText())' + onRemoveUpdate='getVatStatement().setBoxName(getBoxNameTextField().getText())' /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JLabel text="lima.vatstatement.accounts"/> + </cell> + <cell fill="horizontal"> + <JTextField id="accountsTextField" text="{getVatStatement().getAccounts()}"/> + <javax.swing.text.Document javaBean="getAccountsTextField().getDocument()" + onInsertUpdate='getVatStatement().setAccounts(getAccountsTextField().getText())' + onRemoveUpdate='getVatStatement().setAccounts(getAccountsTextField().getText())' /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JLabel text="lima.vatstatement.mastervatstatement"/> + </cell> + <cell fill="horizontal"> + <JTextField editable="{false}" id="masterVatStatementTextField" + text="{getVatStatement().getMasterVatStatement().getLabel()}" /> + </cell> + </row> + <row> + <cell fill="none"> + <JButton text="lima.common.cancel" onActionPerformed="performCancel()"/> + </cell> + <cell fill="none"> + <JButton id="ok" text="lima.common.ok" onActionPerformed="dispose()"/> + </cell> + </row> + </Table> +</JDialog> \ No newline at end of file Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTable.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTable.java 2011-08-02 11:37:37 UTC (rev 3239) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTable.java 2011-08-02 11:37:55 UTC (rev 3240) @@ -24,14 +24,24 @@ */ package org.chorem.lima.ui.vatchart; +import java.awt.Color; +import java.awt.Component; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import javax.swing.tree.TreePath; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.chorem.lima.entity.VatStatement; import org.jdesktop.swingx.JXTreeTable; +import org.jdesktop.swingx.decorator.ColorHighlighter; +import org.jdesktop.swingx.decorator.ComponentAdapter; +import org.jdesktop.swingx.decorator.HighlightPredicate; +import org.jdesktop.swingx.decorator.Highlighter; +import org.jdesktop.swingx.treetable.TreeTableModel; public class VatChartTreeTable extends JXTreeTable implements KeyListener, MouseListener { @@ -45,12 +55,48 @@ protected VatChartViewHandler handler; + private Highlighter colorLine; + public VatChartTreeTable(VatChartViewHandler handler) { this.handler = handler; addKeyListener(this); addMouseListener(this); + + //highlight missing box name lines + addMissingBoxNameColor(); + } + /** + * Highlights line when line is a leaf and is missing its BoxName parameter + */ + private void addMissingBoxNameColor() { + if (colorLine != null) { + removeHighlighter(colorLine); + } + HighlightPredicate predicate = new HighlightPredicate() { + @Override + public boolean isHighlighted(Component renderer, + ComponentAdapter adapter) { + JXTreeTable treeTable = handler.view.getTreeTable(); + TreeTableModel treeTableModel = treeTable.getTreeTableModel(); + TreePath treePath = treeTable.getPathForRow(adapter.row); + VatStatement vatStatement = + (VatStatement) treePath.getLastPathComponent(); + boolean highlighted = false; + if (vatStatement.getBoxName() != null) { + if (treeTableModel.isLeaf(vatStatement) && vatStatement.getBoxName().isEmpty()) { + highlighted = true; + } + } else { + highlighted = true; + } + return highlighted; + } + }; + colorLine = + new ColorHighlighter(predicate, new Color(255, 198, 209), null); + addHighlighter(colorLine); } @Override Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTableModel.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTableModel.java 2011-08-02 11:37:37 UTC (rev 3239) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartTreeTableModel.java 2011-08-02 11:37:55 UTC (rev 3240) @@ -198,10 +198,11 @@ */ public void addVatStatement(TreePath path, VatStatement vatStatement) throws LimaException { // Calling account service - VatStatement parentVatStatementHeader = - (VatStatement) path.getLastPathComponent(); - if (parentVatStatementHeader == getRoot()) { - parentVatStatementHeader = null; + //fixed bug when path is null + VatStatement parentVatStatementHeader = null; + if (path != null) { + parentVatStatementHeader = + (VatStatement) path.getLastPathComponent(); } vatStatementService.createVatStatement( parentVatStatementHeader, vatStatement); @@ -221,6 +222,21 @@ vatStatementService.updateVatStatement(vatStatement); modelSupport.fireTreeStructureChanged(path); } + + /** + * Remove vatStatement + * + * @param path + * @param object + * @throws LimaException + */ + public void removeVatStatementObject(TreePath path, VatStatement vatStatement) throws LimaException { + // Calling account service + int index = getIndexOfChild( + path.getParentPath().getLastPathComponent(), vatStatement); + vatStatementService.removeVatStatement(vatStatement); + modelSupport.fireChildRemoved(path.getParentPath(), index, vatStatement); + } @Override Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartView.jaxx =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartView.jaxx 2011-08-02 11:37:37 UTC (rev 3239) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartView.jaxx 2011-08-02 11:37:55 UTC (rev 3240) @@ -36,15 +36,41 @@ <row> <cell fill="both" weightx="1" weighty="1" rows='6'> <JScrollPane> - <VatChartTreeTable id="treeTable" + <org.chorem.lima.ui.vatchart.VatChartTreeTableModel id="vatTreeTableModel"/> + <org.chorem.lima.ui.vatchart.VatChartTreeTable id="treeTable" constructorParams="getHandler()" selectionMode="{ListSelectionModel.SINGLE_SELECTION}" - treeTableModel="{new org.chorem.lima.ui.vatchart.VatChartTreeTableModel()}" - highlighters="{org.jdesktop.swingx.decorator.HighlighterFactory.createSimpleStriping(new java.awt.Color(222,222,222))}" /> + treeTableModel="{getVatTreeTableModel()}" /> <javax.swing.ListSelectionModel javaBean="getTreeTable().getSelectionModel()" onValueChanged="setSelectedRow(treeTable.getSelectedRow() != -1)"/> </JScrollPane> </cell> </row> + <row> + <cell fill="horizontal"> + <JButton id="addVatStatementMovement" text="lima.vatstatement.movement.add" + onActionPerformed="getHandler().addVatStatementMovement()" /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JButton id="updateButton" text="lima.common.update" + onActionPerformed="getHandler().updateVatStatement()" + enabled="{isSelectedRow()}" /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JButton id="removeButton" text="lima.common.remove" + onActionPerformed="getHandler().removeVatStatement()" + enabled="{isSelectedRow()}" /> + </cell> + </row> + <row> + <cell fill="horizontal"> + <JButton id="importButton" text="lima.importexport.import" + onActionPerformed="getHandler().importVatStatementChart()" /> + </cell> + </row> </Table> \ No newline at end of file Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartViewHandler.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartViewHandler.java 2011-08-02 11:37:37 UTC (rev 3239) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/vatchart/VatChartViewHandler.java 2011-08-02 11:37:55 UTC (rev 3240) @@ -24,13 +24,26 @@ */ package org.chorem.lima.ui.vatchart; +import static org.nuiton.i18n.I18n._; + +import java.math.BigDecimal; + +import javax.swing.JOptionPane; +import javax.swing.tree.TreePath; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.business.ImportServiceMonitorable; +import org.chorem.lima.business.LimaBusinessException; import org.chorem.lima.business.LimaException; import org.chorem.lima.business.ServiceListener; import org.chorem.lima.business.VatStatementServiceMonitorable; +import org.chorem.lima.entity.VatStatement; +import org.chorem.lima.entity.VatStatementImpl; +import org.chorem.lima.enums.ImportExportEnum; +import org.chorem.lima.enums.VatStatementsChartEnum; import org.chorem.lima.service.LimaServiceFactory; +import org.chorem.lima.ui.importexport.ImportExport; import org.jdesktop.swingx.JXTreeTable; public class VatChartViewHandler implements ServiceListener { @@ -41,7 +54,7 @@ protected VatStatementServiceMonitorable vatStatementService; protected VatChartView view; - + protected VatChartViewHandler(VatChartView view) { this.view = view; @@ -52,11 +65,196 @@ ImportServiceMonitorable.class).addListener(this); } - public void refresh(){ - JXTreeTable treeTable = view.getTreeTable(); + public void addVatStatementMovement(){ + + VatChartTreeTableModel treeTableModel = + (VatChartTreeTableModel) view.getTreeTable().getTreeTableModel(); + + int selectedRow = view.getTreeTable().getSelectedRow(); + // get current selection path + TreePath treePath = null; + if (selectedRow == -1) { + treePath = null; + } else { + treePath = view.getTreeTable().getPathForRow(selectedRow); + } + + VatStatement newVatChartMovement = new VatStatementImpl(); + VatChartMovementForm vatChartMovementForm = + new VatChartMovementForm(view); + VatStatement masterVatStatement = null; + if (selectedRow != -1) { + masterVatStatement = (VatStatement)treePath.getLastPathComponent(); + } + newVatChartMovement.setMasterVatStatement(masterVatStatement); + vatChartMovementForm.setVatStatement(newVatChartMovement); + // jaxx constructor don't call super() ? + vatChartMovementForm.setLocationRelativeTo(view); + vatChartMovementForm.setVisible(true); + newVatChartMovement = vatChartMovementForm.getVatStatement(); + + // null == cancel action + if (newVatChartMovement != null) { + newVatChartMovement.setAmount(BigDecimal.ZERO); + // add it + try { + treeTableModel.addVatStatement(treePath, newVatChartMovement); + } catch (LimaBusinessException eee) { + if (log.isErrorEnabled()) { + log.error("Can't add Vat chart Movement", eee); + } + JOptionPane.showMessageDialog( + view, + eee.getMessage(), + _("lima.common.error"), + JOptionPane.ERROR_MESSAGE); + } + catch (LimaException eee) { + if (log.isErrorEnabled()) { + log.error("Can't add Vat chart Movement", eee); + } + JOptionPane.showMessageDialog( + view, + eee.getMessage(), + _("lima.common.error"), + JOptionPane.ERROR_MESSAGE); + } + refresh(); + } + } + + public void updateVatStatement() { + + JXTreeTable treeTable = view.getTreeTable(); + VatChartTreeTableModel treeTableModel = + (VatChartTreeTableModel) treeTable.getTreeTableModel(); + + // get selected account + int selectedRow = view.treeTable.getSelectedRow(); + TreePath treePath = view.treeTable.getPathForRow(selectedRow); // not null + VatStatement vatStatement = + (VatStatement) treePath.getLastPathComponent(); + //update Account or update SubLedger + if (vatStatement != null) { + // get current selection path + if ( selectedRow != -1) { + treePath = view.treeTable.getPathForRow(selectedRow); + } else { + treePath = new TreePath(treeTableModel.getRoot()); + } + VatChartMovementForm vatChartMovementForm = + new VatChartMovementForm(view); + if (vatStatement.getMasterVatStatement() == null) { + VatStatement masterVatStatement = new VatStatementImpl(); + vatStatement.setMasterVatStatement(masterVatStatement); + } + vatChartMovementForm.setVatStatement(vatStatement); + // jaxx constructor don't call super() ? + vatChartMovementForm.setLocationRelativeTo(view); + vatChartMovementForm.setVisible(true); + // null == cancel action + vatStatement = vatChartMovementForm.getVatStatement(); + //if action confirmed + if (vatStatement != null){ + // update it + try { + treeTableModel.updateVatStatement( + treePath, vatStatement); + } catch (LimaException eee) { + if (log.isErrorEnabled()) { + log.error("Can't add update", eee); + } + JOptionPane.showMessageDialog( + view, + eee.getMessage(), + _("lima.common.error"), + JOptionPane.ERROR_MESSAGE); + } + } + } + refresh(); + } + + public void importVatStatementChart(){ + VatChartImportForm form = + new VatChartImportForm(); + form.setLocationRelativeTo(view); + form.setVisible(true); + + Object value = form.getRadioButtons().getSelectedValue(); + // if action confirmed + if (value != null){ + if (form.getDeleteVatStatementChart().isSelected()){ + try { + vatStatementService.removeAllVatStatement(); + + } catch (LimaException eee) { + if (log.isDebugEnabled()){ + log.debug("Can't delete financial statement chart", eee); + } + } + } + VatStatementsChartEnum defaultVatStatementsEnum = + (VatStatementsChartEnum) value; + ImportExport importExport = ImportExport.getInstance(view); + importExport.importExport(ImportExportEnum.CSV_VAT_IMPORT, + defaultVatStatementsEnum.getFilePath(), true); + refresh(); + } + } + + /** + * Ask for user to remove for selected account, and remove it if confirmed. + */ + public void removeVatStatement() { + JXTreeTable treeTable = view.getTreeTable(); VatChartTreeTableModel treeTableModel = (VatChartTreeTableModel) treeTable.getTreeTableModel(); - try { + + // Any row selected + int selectedRow = view.treeTable.getSelectedRow(); + if ( selectedRow != -1) { + int n = JOptionPane.showConfirmDialog(view, + _("lima.charts.vatstatement.question.remove"), + _("lima.common.confirmation"), + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE); + if (n == JOptionPane.YES_OPTION) { + // update view of treetable + TreePath treePath = treeTable.getPathForRow(selectedRow); + VatStatement vatStatement = + (VatStatement) treePath.getLastPathComponent(); + if (!treeTableModel.isLeaf(vatStatement)) { + JOptionPane.showMessageDialog( + view, + _("lima.charts.vatstatement.deleteparent"), + _("lima.common.info"), + JOptionPane.INFORMATION_MESSAGE); + } else { + try{ + treeTableModel.removeVatStatementObject( + treePath, vatStatement); + } catch (LimaException eee) { + if (log.isErrorEnabled()) { + log.error("Can't delete account", eee); + } + JOptionPane.showMessageDialog( + view, + eee.getMessage(), + _("lima.common.error"), + JOptionPane.ERROR_MESSAGE); + } + } + } + refresh(); + } + } + + public void refresh(){ + JXTreeTable treeTable = view.getTreeTable(); + VatChartTreeTableModel treeTableModel = + (VatChartTreeTableModel) treeTable.getTreeTableModel(); + try { treeTableModel.refreshTree(); } catch (LimaException eee) { if(log.isDebugEnabled()){
participants (1)
-
vsalaun@users.chorem.org