Search in sources :

Example 1 with AttributePreferenciesEditor

use of com.ramussoft.gui.common.AttributePreferenciesEditor in project ramus by Vitaliy-Yakovchuk.

the class TableChartAttributePlugin method getAttributePreferenciesEditor.

@Override
public AttributePreferenciesEditor getAttributePreferenciesEditor() {
    return new AttributePreferenciesEditor() {

        private RowTreeTableComponent component;

        @Override
        public JComponent createComponent(Attribute attribute, Engine engine, AccessRules accessRules) {
            component = new RowTreeTableComponent(engine, ChartPlugin.getCharts(engine), accessRules, new RowRootCreater(), new Attribute[] { StandardAttributesPlugin.getAttributeNameAttribute(engine) }, framework);
            component.setSelectType(SelectType.RADIO);
            return component;
        }

        @Override
        public boolean canApply() {
            return component.getModel().getSelectedRows().size() > 0;
        }

        @Override
        public void apply(Attribute attribute, Engine engine, AccessRules accessRules) {
            Row row = component.getModel().getSelectedRows().get(0);
            TableChartPersistent tcp = new TableChartPersistent();
            tcp.setOtherElementId(row.getElementId());
            engine.setAttribute(null, attribute, tcp);
        }
    };
}
Also used : Attribute(com.ramussoft.common.Attribute) RowTreeTableComponent(com.ramussoft.gui.qualifier.table.RowTreeTableComponent) AccessRules(com.ramussoft.common.AccessRules) RowRootCreater(com.ramussoft.gui.qualifier.table.RowRootCreater) TableChartPersistent(com.ramussoft.chart.core.TableChartPersistent) Row(com.ramussoft.database.common.Row) AttributePreferenciesEditor(com.ramussoft.gui.common.AttributePreferenciesEditor) Engine(com.ramussoft.common.Engine)

Example 2 with AttributePreferenciesEditor

use of com.ramussoft.gui.common.AttributePreferenciesEditor in project ramus by Vitaliy-Yakovchuk.

the class TablePlugin method getAttributePreferenciesEditor.

@Override
public AttributePreferenciesEditor getAttributePreferenciesEditor() {
    return new AttributePreferenciesEditor() {

        private SelectableTableView view;

        private AttributeOrderEditPanel attributeOrderEditPanel = new AttributeOrderEditPanel(new ArrayList<Attribute>(), true);

        private Action createAttributeAction = new AbstractAction() {

            /**
             */
            private static final long serialVersionUID = -2190162251129929137L;

            {
                this.putValue(ACTION_COMMAND_KEY, "CreateAttribute");
                this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/add.png")));
                this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_ADD, KeyEvent.CTRL_MASK));
            }

            @Override
            public void actionPerformed(ActionEvent e) {
                new AttributePreferenciesDialog(framework).setVisible(true);
            }
        };

        private Action deleteAttributeAction = new AbstractAction() {

            {
                this.putValue(ACTION_COMMAND_KEY, "DeleteAttribute");
                this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/delete.png")));
                this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
            }

            /**
             */
            private static final long serialVersionUID = 895892525217269346L;

            @Override
            public void actionPerformed(ActionEvent e) {
                if (JOptionPane.showConfirmDialog(framework.getMainFrame(), GlobalResourcesManager.getString("DeleteActiveElementsDialog.Warning"), UIManager.getString("OptionPane.titleText"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                    TreePath[] paths = view.getComponent().getTable().getTreeSelectionModel().getSelectionPaths();
                    if (paths.length == 0) {
                        System.err.println("Trying to delete element, but no elements are selected");
                        return;
                    }
                    for (TreePath path : paths) {
                        Row row = ((TreeTableNode) path.getLastPathComponent()).getRow();
                        if (row == null) {
                            System.err.println("Trying to delete node, which conatain no row");
                            return;
                        }
                        long attrId = (Long) row.getAttribute((Attribute) view.getComponent().getRowSet().getEngine().getPluginProperty("Core", StandardAttributesPlugin.ATTRIBUTE_ID));
                        view.getComponent().getRowSet().startUserTransaction();
                        view.getComponent().getRowSet().getEngine().deleteAttribute(attrId);
                        view.getComponent().getRowSet().commitUserTransaction();
                    }
                }
            }
        };

        @Override
        public void apply(Attribute attribute, Engine engine, AccessRules accessRules) {
            String qualifierName = StandardAttributesPlugin.getTableQualifeirName(attribute);
            Qualifier qualifier = engine.getSystemQualifier(qualifierName);
            if (qualifier == null) {
                qualifier = engine.createSystemQualifier();
                qualifier.setName(qualifierName);
            }
            List<Attribute> attributes = attributeOrderEditPanel.getAttributes();
            fillAttributes(engine, attributes);
            qualifier.setAttributes(attributes);
            qualifier.getSystemAttributes().clear();
            qualifier.getSystemAttributes().add(StandardAttributesPlugin.getTableElementIdAttribute(engine));
            engine.updateQualifier(qualifier);
            List<TableGroupablePropertyPersistent> list = new ArrayList<TableGroupablePropertyPersistent>();
            int i = 0;
            for (String group : attributeOrderEditPanel.getAttributeGroups()) {
                if (group != null) {
                    TableGroupablePropertyPersistent p = new TableGroupablePropertyPersistent();
                    p.setAttribute(attribute.getId());
                    p.setName(group);
                    p.setOtherAttribute(attributes.get(i).getId());
                    list.add(p);
                }
                i++;
            }
            engine.setAttribute(null, attribute, list);
        }

        private void fillAttributes(Engine engine, List<Attribute> attributes) {
            List<Row> rows = view.getSelectedRows();
            ArrayList<Attribute> toRemove = new ArrayList<Attribute>(attributes);
            for (Row row : rows) {
                Attribute attr = StandardAttributesPlugin.getAttribute(engine, row.getElement());
                toRemove.remove(attr);
                if (attributes.indexOf(attr) < 0)
                    attributes.add(attr);
            }
            for (Attribute attribute : toRemove) attributes.remove(attribute);
        }

        @Override
        public boolean canApply() {
            return view.getSelectedRows().size() > 0;
        }

        @SuppressWarnings("unchecked")
        @Override
        public JComponent createComponent(Attribute attribute, final Engine engine, AccessRules accessRules) {
            view = new SelectableTableView(framework, engine, accessRules, StandardAttributesPlugin.getAttributesQualifier(engine)) {

                @Override
                protected Attribute[] getAttributes() {
                    return new Attribute[] { StandardAttributesPlugin.getAttributeNameAttribute(engine), StandardAttributesPlugin.getAttributeTypeNameAttribute(engine) };
                }
            };
            JComponent component = view.createComponent();
            view.getComponent().getModel().setEditable(0, false);
            view.getComponent().getModel().setEditable(1, false);
            JTabbedPane pane = new JTabbedPane();
            pane.addTab(GlobalResourcesManager.getString("attributes"), component);
            pane.addTab(GlobalResourcesManager.getString("AttributesOrder"), attributeOrderEditPanel);
            pane.addChangeListener(new ChangeListener() {

                @Override
                public void stateChanged(ChangeEvent e) {
                    fillAttributes(engine, attributeOrderEditPanel.getAttributes());
                    attributeOrderEditPanel.refresh();
                }
            });
            if (attribute != null) {
                Qualifier qualifier = StandardAttributesPlugin.getTableQualifierForAttribute(engine, attribute);
                attributeOrderEditPanel.setAttributes(qualifier.getAttributes());
                Hashtable<Attribute, String> groups = new Hashtable<Attribute, String>();
                List<TableGroupablePropertyPersistent> pList = (List) engine.getAttribute(null, attribute);
                for (TableGroupablePropertyPersistent p : pList) for (Attribute attribute2 : qualifier.getAttributes()) {
                    if ((p.getOtherAttribute() == attribute2.getId()) && (p.getName() != null))
                        groups.put(attribute2, p.getName());
                }
                attributeOrderEditPanel.setGroups(groups);
                List<Row> list = view.getComponent().getRowSet().getAllRows();
                for (Row row : list) {
                    Attribute attr = StandardAttributesPlugin.getAttribute(engine, row.getElement());
                    if (qualifier.getAttributes().indexOf(attr) >= 0) {
                        view.setSelectedRow(row, true);
                    }
                }
            }
            view.getComponent().getTable().setComponentPopupMenu(createPopupMenu());
            return pane;
        }

        private JPopupMenu createPopupMenu() {
            JPopupMenu menu = new JPopupMenu();
            for (Action action : getActions()) {
                if (action == null)
                    menu.addSeparator();
                else {
                    action.putValue(Action.NAME, GlobalResourcesManager.getString((String) action.getValue(Action.ACTION_COMMAND_KEY)));
                    menu.add(action);
                }
            }
            return menu;
        }

        private Action[] getActions() {
            return new Action[] { createAttributeAction, new AbstractAction() {

                /**
                 */
                private static final long serialVersionUID = 3284967628905643862L;

                {
                    this.putValue(ACTION_COMMAND_KEY, "Action.SortByName");
                    this.putValue(SMALL_ICON, new ImageIcon(getClass().getResource("/com/ramussoft/gui/table/sort-incr.png")));
                }

                @Override
                public void actionPerformed(ActionEvent e) {
                    view.getComponent().getRowSet().startUserTransaction();
                    view.getComponent().getRowSet().sortByName();
                    view.getComponent().getRowSet().commitUserTransaction();
                }
            }, deleteAttributeAction };
        }
    };
}
Also used : ImageIcon(javax.swing.ImageIcon) Action(javax.swing.Action) AbstractAction(javax.swing.AbstractAction) Attribute(com.ramussoft.common.Attribute) ActionEvent(java.awt.event.ActionEvent) JTabbedPane(javax.swing.JTabbedPane) ArrayList(java.util.ArrayList) AttributePreferenciesEditor(com.ramussoft.gui.common.AttributePreferenciesEditor) AttributeOrderEditPanel(com.ramussoft.gui.qualifier.AttributeOrderEditPanel) Qualifier(com.ramussoft.common.Qualifier) ArrayList(java.util.ArrayList) List(java.util.List) ChangeListener(javax.swing.event.ChangeListener) TableGroupablePropertyPersistent(com.ramussoft.core.attribute.simple.TableGroupablePropertyPersistent) AbstractAction(javax.swing.AbstractAction) SelectableTableView(com.ramussoft.gui.qualifier.table.SelectableTableView) Engine(com.ramussoft.common.Engine) Hashtable(java.util.Hashtable) JComponent(javax.swing.JComponent) JPopupMenu(javax.swing.JPopupMenu) TreePath(javax.swing.tree.TreePath) ChangeEvent(javax.swing.event.ChangeEvent) AccessRules(com.ramussoft.common.AccessRules) Row(com.ramussoft.database.common.Row)

Example 3 with AttributePreferenciesEditor

use of com.ramussoft.gui.common.AttributePreferenciesEditor in project ramus by Vitaliy-Yakovchuk.

the class CurrencyAttributePlugin method getAttributePreferenciesEditor.

@Override
public AttributePreferenciesEditor getAttributePreferenciesEditor() {
    return new AttributePreferenciesEditor() {

        private JComboBox comboBox = new JComboBox();

        @Override
        public JComponent createComponent(Attribute attribute, Engine engine, AccessRules accessRules) {
            CurrencyPropertyPersistent p = null;
            if (attribute != null)
                p = (CurrencyPropertyPersistent) engine.getAttribute(null, attribute);
            comboBox.addItem(GlobalResourcesManager.getString("ByDefault"));
            int i = 1;
            int index = 0;
            for (Currency currency : getCurrencies()) {
                comboBox.addItem(currency);
                if ((p != null) && (p.getCode() != null) && (p.getCode().equals(currency.getCurrencyCode())))
                    index = i;
                i++;
            }
            comboBox.setSelectedIndex(index);
            double[][] size = { { 5, TableLayout.MINIMUM, 5, TableLayout.FILL, 5 }, { 5, TableLayout.MINIMUM, 5 } };
            TableLayout layout = new TableLayout(size);
            JPanel panel = new JPanel(layout);
            panel.add(new JLabel(GlobalResourcesManager.getString("Attribute.CurrencyCode")), "1,1");
            panel.add(comboBox, "3,1");
            return panel;
        }

        @Override
        public boolean canApply() {
            return true;
        }

        @Override
        public void apply(Attribute attribute, Engine engine, AccessRules accessRules) {
            if (comboBox.getSelectedIndex() == 0) {
                engine.setAttribute(null, attribute, null);
            } else {
                CurrencyPropertyPersistent p = new CurrencyPropertyPersistent();
                p.setCode(((Currency) comboBox.getSelectedItem()).getCurrencyCode());
                engine.setAttribute(null, attribute, p);
            }
        }
    };
}
Also used : CurrencyPropertyPersistent(com.ramussoft.core.attribute.simple.CurrencyPropertyPersistent) JPanel(javax.swing.JPanel) JComboBox(javax.swing.JComboBox) Attribute(com.ramussoft.common.Attribute) Currency(java.util.Currency) AccessRules(com.ramussoft.common.AccessRules) JLabel(javax.swing.JLabel) TableLayout(info.clearthought.layout.TableLayout) AttributePreferenciesEditor(com.ramussoft.gui.common.AttributePreferenciesEditor) Engine(com.ramussoft.common.Engine)

Example 4 with AttributePreferenciesEditor

use of com.ramussoft.gui.common.AttributePreferenciesEditor in project ramus by Vitaliy-Yakovchuk.

the class OtherElementPlugin method getAttributePreferenciesEditor.

@Override
public AttributePreferenciesEditor getAttributePreferenciesEditor() {
    return new AttributePreferenciesEditor() {

        private JComboBox qualifierBox = new JComboBox();

        private JComboBox attributeBox = new JComboBox();

        @Override
        public void apply(Attribute attribute, Engine engine, AccessRules accessRules) {
            OtherElementPropertyPersistent p = new OtherElementPropertyPersistent();
            p.setQualifier(((Qualifier) qualifierBox.getSelectedItem()).getId());
            p.setQualifierAttribute(((Attribute) attributeBox.getSelectedItem()).getId());
            engine.setAttribute(null, attribute, p);
        }

        @Override
        public boolean canApply() {
            return (qualifierBox.getSelectedItem() != null) && (attributeBox.getSelectedItem() != null);
        }

        @Override
        public JComponent createComponent(Attribute attribute, Engine engine, AccessRules accessRules) {
            double[][] size = { { 5, TableLayout.FILL, 5, TableLayout.FILL, 5 }, { 5, TableLayout.MINIMUM, 5, TableLayout.MINIMUM, 5 } };
            JPanel panel = new JPanel(new TableLayout(size));
            panel.add(new JLabel(GlobalResourcesManager.getString("OtherElement.Qualifier")), "1, 1");
            panel.add(new JLabel(GlobalResourcesManager.getString("OtherElement.Attribute")), "3, 1");
            for (Qualifier qualifier : engine.getQualifiers()) {
                qualifierBox.addItem(qualifier);
            }
            if (attribute != null) {
                OtherElementPropertyPersistent p = (OtherElementPropertyPersistent) engine.getAttribute(null, attribute);
                qualifierBox.setSelectedItem(engine.getQualifier(p.getQualifier()));
                long attributeId = p.getQualifierAttribute();
                if (attributeId >= 0)
                    attributeBox.setSelectedItem(engine.getAttribute(attributeId));
                qualifierBox.setEnabled(false);
            }
            qualifierBox.addItemListener(new ItemListener() {

                @Override
                public void itemStateChanged(ItemEvent e) {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
                        loadAttributes();
                    }
                }
            });
            loadAttributes();
            panel.add(qualifierBox, "1, 3");
            panel.add(attributeBox, "3, 3");
            return panel;
        }

        private void loadAttributes() {
            attributeBox.removeAllItems();
            Qualifier qualifier = (Qualifier) qualifierBox.getSelectedItem();
            if (qualifier == null)
                return;
            for (Attribute attribute : qualifier.getAttributes()) {
                attributeBox.addItem(attribute);
            }
        }
    };
}
Also used : JPanel(javax.swing.JPanel) ItemEvent(java.awt.event.ItemEvent) JComboBox(javax.swing.JComboBox) Attribute(com.ramussoft.common.Attribute) JLabel(javax.swing.JLabel) AttributePreferenciesEditor(com.ramussoft.gui.common.AttributePreferenciesEditor) OtherElementPropertyPersistent(com.ramussoft.core.attribute.simple.OtherElementPropertyPersistent) AccessRules(com.ramussoft.common.AccessRules) Qualifier(com.ramussoft.common.Qualifier) ItemListener(java.awt.event.ItemListener) TableLayout(info.clearthought.layout.TableLayout) Engine(com.ramussoft.common.Engine)

Aggregations

AccessRules (com.ramussoft.common.AccessRules)4 Attribute (com.ramussoft.common.Attribute)4 Engine (com.ramussoft.common.Engine)4 AttributePreferenciesEditor (com.ramussoft.gui.common.AttributePreferenciesEditor)4 Qualifier (com.ramussoft.common.Qualifier)2 Row (com.ramussoft.database.common.Row)2 TableLayout (info.clearthought.layout.TableLayout)2 JComboBox (javax.swing.JComboBox)2 JLabel (javax.swing.JLabel)2 JPanel (javax.swing.JPanel)2 TableChartPersistent (com.ramussoft.chart.core.TableChartPersistent)1 CurrencyPropertyPersistent (com.ramussoft.core.attribute.simple.CurrencyPropertyPersistent)1 OtherElementPropertyPersistent (com.ramussoft.core.attribute.simple.OtherElementPropertyPersistent)1 TableGroupablePropertyPersistent (com.ramussoft.core.attribute.simple.TableGroupablePropertyPersistent)1 AttributeOrderEditPanel (com.ramussoft.gui.qualifier.AttributeOrderEditPanel)1 RowRootCreater (com.ramussoft.gui.qualifier.table.RowRootCreater)1 RowTreeTableComponent (com.ramussoft.gui.qualifier.table.RowTreeTableComponent)1 SelectableTableView (com.ramussoft.gui.qualifier.table.SelectableTableView)1 ActionEvent (java.awt.event.ActionEvent)1 ItemEvent (java.awt.event.ItemEvent)1