Search in sources :

Example 71 with Qualifier

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

the class ElementListPlugin method init.

@Override
public void init(Engine engine, AccessRules accessor) {
    super.init(engine, accessor);
    if (!StandardAttributesPlugin.isDisableAutoupdate(engine))
        engine.addElementListener(null, new ElementAdapter() {

            @Override
            public void beforeElementDeleted(ElementEvent event) {
                if (event.isJournaled())
                    return;
                long id = event.getQualifierId();
                Qualifier q = event.getEngine().getQualifier(id);
                cleanAttribute(q.getAttributes(), event);
                cleanAttribute(q.getSystemAttributes(), event);
                super.beforeElementDeleted(event);
            }

            private void cleanAttribute(List<Attribute> attributes, ElementEvent event) {
                for (Attribute a : attributes) {
                    if (isMyType(a)) {
                        event.getEngine().setAttribute(event.getOldElement(), a, new ArrayList<Persistent>(0));
                    }
                }
            }
        });
}
Also used : ElementAdapter(com.ramussoft.common.event.ElementAdapter) Attribute(com.ramussoft.common.Attribute) Qualifier(com.ramussoft.common.Qualifier) ArrayList(java.util.ArrayList) List(java.util.List) Persistent(com.ramussoft.common.persistent.Persistent) ElementEvent(com.ramussoft.common.event.ElementEvent)

Example 72 with Qualifier

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

the class TableEditorModel method close.

public void close() {
    Qualifier qualifier = StandardAttributesPlugin.getTableQualifierForAttribute(engine, tableAttribute);
    engine.removeElementAttributeListener(qualifier, listener);
    engine.removeElementListener(qualifier, elementListener);
    CloseEvent event = new CloseEvent(this);
    for (CloseListener listener : getCloseListeners()) {
        listener.closed(event);
    }
    framework.removeActionListener(UPDATE_TABLE_VALUE, tableValueListener);
}
Also used : CloseEvent(com.ramussoft.gui.qualifier.table.event.CloseEvent) CloseListener(com.ramussoft.gui.qualifier.table.event.CloseListener) Qualifier(com.ramussoft.common.Qualifier)

Example 73 with Qualifier

use of com.ramussoft.common.Qualifier 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 74 with Qualifier

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

the class ElistComponent method deleteElement.

private void deleteElement(int row) {
    int index = table.convertRowIndexToModel(row);
    Attribute attribute = list.get(index);
    ElementListPropertyPersistent p = (ElementListPropertyPersistent) engine.getAttribute(null, attribute);
    Qualifier q1 = engine.getQualifier(p.getQualifier1());
    if (q1 != null) {
        q1.getAttributes().remove(attribute);
        engine.updateQualifier(q1);
    }
    Qualifier q2 = engine.getQualifier(p.getQualifier2());
    if (q2 != null) {
        q2.getAttributes().remove(attribute);
        engine.updateQualifier(q2);
    }
    engine.deleteAttribute(attribute.getId());
}
Also used : Attribute(com.ramussoft.common.Attribute) ElementListPropertyPersistent(com.ramussoft.core.attribute.simple.ElementListPropertyPersistent) Qualifier(com.ramussoft.common.Qualifier)

Example 75 with Qualifier

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

the class ElementListPlugin method getAttributeEditor.

@Override
public AttributeEditor getAttributeEditor(Engine engine, AccessRules rules, Element element, Attribute attribute, String propertiesPrefix, AttributeEditor old) {
    ElementListPropertyPersistent p = (ElementListPropertyPersistent) engine.getAttribute(null, attribute);
    long qId = element.getQualifierId();
    Qualifier qualifier;
    boolean left;
    if (p.getQualifier1() == qId) {
        qualifier = engine.getQualifier(p.getQualifier2());
        left = false;
    } else {
        qualifier = engine.getQualifier(p.getQualifier1());
        left = true;
    }
    if (old != null) {
        if ((old == elementListAttributeEditor) && (this.attribute.equals(attribute)) && (this.left == left)) {
            elementListAttributeEditor.setElement(element);
            return elementListAttributeEditor;
        } else
            old.close();
    }
    this.attribute = attribute;
    this.left = left;
    elementListAttributeEditor = new ElementListAttributeEditor(framework, qualifier, left, propertiesPrefix);
    elementListAttributeEditor.setElement(element);
    return elementListAttributeEditor;
}
Also used : ElementListPropertyPersistent(com.ramussoft.core.attribute.simple.ElementListPropertyPersistent) Qualifier(com.ramussoft.common.Qualifier)

Aggregations

Qualifier (com.ramussoft.common.Qualifier)157 Attribute (com.ramussoft.common.Attribute)72 Element (com.ramussoft.common.Element)59 ArrayList (java.util.ArrayList)45 Engine (com.ramussoft.common.Engine)22 Row (com.ramussoft.database.common.Row)17 Row (com.ramussoft.pb.Row)14 List (java.util.List)12 Hashtable (java.util.Hashtable)11 QualifierEvent (com.ramussoft.common.event.QualifierEvent)10 ResultSet (java.sql.ResultSet)9 SQLException (java.sql.SQLException)9 AttributeType (com.ramussoft.common.AttributeType)8 RowSet (com.ramussoft.database.common.RowSet)8 DataPlugin (com.ramussoft.pb.DataPlugin)8 NFunction (com.ramussoft.pb.data.negine.NFunction)8 AttributeEvent (com.ramussoft.common.event.AttributeEvent)7 Journaled (com.ramussoft.common.journal.Journaled)7 RowMapper (com.ramussoft.jdbc.RowMapper)7 IEngine (com.ramussoft.common.IEngine)6