Search in sources :

Example 1 with ReductionRule

use of cl.utfsm.acs.acg.core.ReductionRule in project ACS by ACS-Community.

the class ReductionsView method fillMRParentWidgets.

private void fillMRParentWidgets(String ff, String fm, int fc) {
    ReductionRule mrr = _reductionManager.getMRParentByTriplet(ff, fm, fc);
    Alarm parent = null;
    // This should happen only when creating a new rule...
    if (mrr == null) {
        parent = _alarmManager.getAlarm(ff + ":" + fm + ":" + fc);
        _MRParentErrorMessageLabel.setText("No Reduction Rule for this triplet.");
    } else {
        parent = mrr.getParent();
        if (mrr.getChildrenCount() < mrr.getThreshold())
            _MRParentErrorMessageLabel.setText("You need to have at least threshold (" + mrr.getThreshold() + ") childs for this triplet.");
    }
    _MRParentFFCombo.removeAll();
    _MRParentChFFCombo.removeAll();
    _MRParentChFFCombo.add("Any");
    _MRParentChFFCombo.select(0);
    List<FaultFamily> ffList = _alarmManager.getAllAlarms();
    List<String> tmp = new ArrayList<String>();
    List<FaultFamily> sortedFFList = new ArrayList<FaultFamily>();
    for (FaultFamily tff : ffList) tmp.add(tff.getName());
    Collections.sort(tmp, IGNORE_CASE_ORDER);
    for (String sff : tmp) sortedFFList.add(_alarmManager.getFaultFamily(sff));
    ffList = sortedFFList;
    FaultFamily ffs = null;
    int i = -1;
    for (Iterator<FaultFamily> iterator = ffList.iterator(); iterator.hasNext(); ) {
        FaultFamily fft = iterator.next();
        if (fft.getFaultCodeCount() > 0 && fft.getFaultMemberCount() > 0)
            _MRParentFFCombo.add(fft.getName());
        _MRParentChFFCombo.add(fft.getName());
        if (parent != null && fft.getName().compareTo(parent.getTriplet().getFaultFamily()) == 0) {
            i = _MRParentFFCombo.getItemCount() - 1;
            ffs = fft;
        }
    }
    _MRParentFFCombo.select(i);
    _MRParentFMCombo.removeAll();
    if (ffs != null) {
        i = -1;
        FaultMember[] fml = ffs.getFaultMember();
        List<FaultMember> fmList = Arrays.asList(fml);
        tmp = new ArrayList<String>();
        List<FaultMember> sortedFMList = new ArrayList<FaultMember>();
        for (FaultMember tfm : fmList) tmp.add(tfm.getName());
        Collections.sort(tmp, IGNORE_CASE_ORDER);
        for (String sfm : tmp) for (FaultMember tfm : fmList) if (sfm.compareTo(tfm.getName()) == 0)
            sortedFMList.add(tfm);
        fmList = sortedFMList;
        for (FaultMember fmt : fmList) {
            _MRParentFMCombo.add(fmt.getName());
            if (fmt.getName().compareTo(parent.getTriplet().getFaultMember()) == 0)
                i = _MRParentFMCombo.getItemCount() - 1;
        }
        _MRParentFMCombo.select(i);
    }
    _MRParentFCCombo.removeAll();
    if (ffs != null) {
        i = -1;
        FaultCode[] fcl = ffs.getFaultCode();
        List<FaultCode> fcList = Arrays.asList(fcl);
        tmp = new ArrayList<String>();
        List<FaultCode> sortedFCList = new ArrayList<FaultCode>();
        for (FaultCode tfc : fcList) tmp.add(Integer.toString(tfc.getValue()));
        Collections.sort(tmp);
        for (String sfc : tmp) for (FaultCode tfc : fcList) if (sfc.compareTo(Integer.toString(tfc.getValue())) == 0)
            sortedFCList.add(tfc);
        fcList = sortedFCList;
        for (FaultCode fct : fcList) {
            _MRParentFCCombo.add(Integer.toString(fct.getValue()));
            if (fct.getValue() == parent.getTriplet().getFaultCode())
                i = _MRParentFCCombo.getItemCount() - 1;
        }
        _MRParentFCCombo.select(i);
    }
    _MRParentThresholdText.setText("");
    if (mrr != null)
        _MRParentThresholdText.setText(Integer.toString(mrr.getThreshold()));
    _MRParentChFMCombo.removeAll();
    _MRParentChFMCombo.add("Any");
    _MRParentChFMCombo.select(0);
    _MRParentChFCCombo.removeAll();
    _MRParentChFCCombo.add("Any");
    _MRParentChFCCombo.select(0);
    if (ff.isEmpty() && fm.isEmpty() && fc == 0) {
        if (!_MRParentFFCombo.getText().isEmpty() && !_MRParentFMCombo.getText().isEmpty() && !_MRParentFCCombo.getText().isEmpty())
            fillMRParentChAlarmList(_MRParentFFCombo.getText(), _MRParentFMCombo.getText(), Integer.parseInt(_MRParentFCCombo.getText()));
    } else
        fillMRParentChAlarmList(ff, fm, fc);
//_updateNRParentFF.setEnabled(true);
}
Also used : FaultMember(alma.acs.alarmsystem.generated.FaultMember) FaultCode(alma.acs.alarmsystem.generated.FaultCode) ArrayList(java.util.ArrayList) ReductionRule(cl.utfsm.acs.acg.core.ReductionRule) Point(org.eclipse.swt.graphics.Point) FaultFamily(alma.acs.alarmsystem.generated.FaultFamily) Alarm(cern.laser.business.data.Alarm)

Example 2 with ReductionRule

use of cl.utfsm.acs.acg.core.ReductionRule in project ACS by ACS-Community.

the class ReductionsView method createMRParentWidgets.

private void createMRParentWidgets() {
    _updateMRParentFF = new Listener() {

        public void handleEvent(Event event) {
            _MRParentFMCombo.removeAll();
            FaultMember[] fml = _alarmManager.getFaultFamily(_MRParentFFCombo.getText()).getFaultMember();
            for (int j = 0; j < fml.length; j++) {
                _MRParentFMCombo.add(fml[j].getName());
            }
            _MRParentFCCombo.removeAll();
            FaultCode[] fcl = _alarmManager.getFaultFamily(_MRParentFFCombo.getText()).getFaultCode();
            for (int j = 0; j < fcl.length; j++) {
                _MRParentFCCombo.add(String.valueOf(fcl[j].getValue()));
            }
            //_MRParentThresholdText.setText("");
            _MRParentErrorMessageLabel.setText("Please choose a Fault Member and a Fault Code.");
        }
    };
    _updateMRParent = new Listener() {

        public void handleEvent(Event event) {
            if (_tree.getSelection() == null || _tree.getSelection().length == 0)
                return;
            NodeType type = (NodeType) _tree.getSelection()[0].getData();
            if (type != NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA)
                return;
            if (_MRParentFMCombo.getText().isEmpty()) {
                _MRParentErrorMessageLabel.setText("Please choose a Fault Member.");
                return;
            }
            if (_MRParentFCCombo.getText().isEmpty()) {
                _MRParentErrorMessageLabel.setText("Please choose a Fault Code.");
                return;
            }
            if (_MRParentThresholdText.getText().isEmpty()) {
                _MRParentErrorMessageLabel.setText("Please set a Threshold value.");
                return;
            }
            int thr;
            try {
                thr = Integer.parseInt(_MRParentThresholdText.getText());
            } catch (NumberFormatException e) {
                _MRParentErrorMessageLabel.setText("Incorrect Threshold. A number is required.");
                return;
            }
            String[] tr = getTriplet(_tree.getSelection()[0].getText());
            ReductionRule mrr = _reductionManager.getMRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
            ReductionRule mrr2 = _reductionManager.getMRParentByTriplet(_MRParentFFCombo.getText(), _MRParentFMCombo.getText(), Integer.parseInt(_MRParentFCCombo.getText()));
            Alarm parent = null;
            Alarm mParent;
            fillMRParentChAlarmList(_MRParentFFCombo.getText(), _MRParentFMCombo.getText(), Integer.parseInt(_MRParentFCCombo.getText()));
            if (mrr == null) {
                _MRParentErrorMessageLabel.setText("There's no Reduction Rule (no children) for the selected Alarm.");
                return;
            } else
                parent = mrr.getParent();
            if (mrr2 == null)
                mParent = _alarmManager.getAlarm(new String(_MRParentFFCombo.getText() + ":" + _MRParentFMCombo.getText() + ":" + _MRParentFCCombo.getText()));
            else {
                mParent = mrr2.getParent();
                if (mrr != mrr2) {
                    ErrorDialog edialog = new ErrorDialog(ReductionsView.this.getViewSite().getShell(), "Reduction Rule Already Exists", "The reduction rule you are trying to create already exists", new Status(IStatus.ERROR, "cl.utfsm.acs.acg", "The reduction rule parent already exists"), IStatus.ERROR);
                    edialog.setBlockOnOpen(true);
                    edialog.open();
                    return;
                }
            }
            if (parent != null) {
                String[] ch = parent.getMultiplicityChildren();
                //Remove all Children from mrr and add them to mrr2.
                try {
                    for (int i = 0; i < ch.length; i++) {
                        Alarm aCh = _alarmManager.getAlarm(ch[i]);
                        if (aCh != null) {
                            if (!_reductionManager.deleteMultiReductionRule(parent, aCh)) {
                                _MRParentErrorMessageLabel.setText("One or more children alarms didn't exist.");
                                continue;
                            }
                            _reductionManager.addMultiReductionRule(mParent, aCh);
                        }
                    }
                    _reductionManager.updateMultiThreshold(mParent, thr);
                } catch (IllegalOperationException e) {
                    _MRParentErrorMessageLabel.setText("The parent alarm didn't exist.");
                }
                _tree.getSelection()[0].setText("<" + mParent.getAlarmId().replace(':', ',') + ">");
                _MRParentErrorMessageLabel.setText("");
            }
            if (mrr != null && mrr.getChildrenCount() < mrr.getThreshold()) {
                _MRParentErrorMessageLabel.setText("You need to have at least threshold (" + mrr.getThreshold() + ") childs for this triplet.");
                return;
            }
            if (tr[0].compareTo(_MRParentFFCombo.getText()) != 0 || tr[1].compareTo(_MRParentFMCombo.getText()) != 0 || tr[2].compareTo(_MRParentFCCombo.getText()) != 0) {
                sortReductionRulesList();
                Triplet t = mParent.getTriplet();
                selectElementFromTree("<" + t.getFaultFamily() + "," + t.getFaultMember() + "," + t.getFaultCode() + ">", false);
            }
        }
    };
    _updateMRParentChFF = new Listener() {

        public void handleEvent(Event event) {
            _MRParentChFMCombo.removeAll();
            _MRParentChFMCombo.add("Any");
            if (_MRParentChFFCombo.getText().compareTo("Any") != 0) {
                FaultMember[] fml = _alarmManager.getFaultFamily(_MRParentChFFCombo.getText()).getFaultMember();
                for (int j = 0; j < fml.length; j++) {
                    _MRParentChFMCombo.add(fml[j].getName());
                }
            }
            _MRParentChFMCombo.select(0);
            _MRParentChFCCombo.removeAll();
            _MRParentChFCCombo.add("Any");
            if (_MRParentChFFCombo.getText().compareTo("Any") != 0) {
                FaultCode[] fcl = _alarmManager.getFaultFamily(_MRParentChFFCombo.getText()).getFaultCode();
                for (int j = 0; j < fcl.length; j++) {
                    _MRParentChFCCombo.add(String.valueOf(fcl[j].getValue()));
                }
            }
            _MRParentChFCCombo.select(0);
            TreeItem[] tmp = _tree.getSelection();
            if (tmp == null || tmp.length == 0)
                return;
            TreeItem item = tmp[0];
            String[] triplet = getTriplet(item.getText());
            fillMRParentChAlarmList(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
        }
    };
    _updateMRParentCh = new Listener() {

        public void handleEvent(Event event) {
            TreeItem[] tmp = _tree.getSelection();
            if (tmp == null || tmp.length == 0)
                return;
            TreeItem item = tmp[0];
            String[] triplet = getTriplet(item.getText());
            fillMRParentChAlarmList(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
        }
    };
    _MRParentGroup = new Group(_compInitial, SWT.SHADOW_ETCHED_IN);
    GridLayout gl = new GridLayout();
    gl.numColumns = 1;
    GridData gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.verticalAlignment = SWT.FILL;
    _MRParentGroup.setLayout(gl);
    _MRParentGroup.setLayoutData(gd);
    _MRParentFtGroup = new Group(_MRParentGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 2;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentFtGroup.setLayout(gl);
    _MRParentFtGroup.setLayoutData(gd);
    _MRParentFtGroup.setText("Primary Alarm");
    _MRParentFFLabel = new Label(_MRParentFtGroup, SWT.NONE);
    _MRParentFFLabel.setText("Fault Family:");
    _MRParentFFCombo = new Combo(_MRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentFFCombo.setLayoutData(gd);
    _MRParentFFCombo.addListener(SWT.Selection, _updateMRParentFF);
    _MRParentFMLabel = new Label(_MRParentFtGroup, SWT.NONE);
    _MRParentFMLabel.setText("Fault Member:");
    _MRParentFMCombo = new Combo(_MRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentFMCombo.setLayoutData(gd);
    _MRParentFMCombo.addListener(SWT.Selection, _updateMRParent);
    _MRParentFCLabel = new Label(_MRParentFtGroup, SWT.NONE);
    _MRParentFCLabel.setText("Fault Code:");
    _MRParentFCCombo = new Combo(_MRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentFCCombo.setLayoutData(gd);
    _MRParentFCCombo.addListener(SWT.Selection, _updateMRParent);
    _MRParentThresholdLabel = new Label(_MRParentFtGroup, SWT.NONE);
    _MRParentThresholdLabel.setText("Threshold:");
    _MRParentThresholdText = new Text(_MRParentFtGroup, SWT.BORDER);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentThresholdText.setLayoutData(gd);
    _MRParentThresholdText.addListener(SWT.Modify, _updateMRParent);
    //
    _MRParentChGroup = new Group(_MRParentGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 1;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.verticalAlignment = SWT.FILL;
    _MRParentChGroup.setLayout(gl);
    _MRParentChGroup.setLayoutData(gd);
    _MRParentChGroup.setText("Alarms to Ignore");
    _MRParentChFilterGroup = new Group(_MRParentChGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 2;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFilterGroup.setLayout(gl);
    _MRParentChFilterGroup.setLayoutData(gd);
    _MRParentChFilterGroup.setText("Filter Options");
    _MRParentChFilterLevelGroup = new Group(_MRParentChFilterGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 3;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalSpan = 2;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFilterLevelGroup.setLayout(gl);
    _MRParentChFilterLevelGroup.setLayoutData(gd);
    _MRParentChFilterLevelGroup.setText("Show");
    _MRParentChAllRadio = new Button(_MRParentChFilterLevelGroup, SWT.RADIO);
    _MRParentChAllRadio.setText("All");
    _MRParentChAllRadio.addListener(SWT.Selection, _updateMRParentCh);
    _MRParentChSelectedRadio = new Button(_MRParentChFilterLevelGroup, SWT.RADIO);
    _MRParentChSelectedRadio.setText("Selected");
    _MRParentChSelectedRadio.addListener(SWT.Selection, _updateMRParentCh);
    _MRParentChUnselectedRadio = new Button(_MRParentChFilterLevelGroup, SWT.RADIO);
    _MRParentChUnselectedRadio.setText("Unselected");
    _MRParentChUnselectedRadio.addListener(SWT.Selection, _updateMRParentCh);
    _MRParentChFFLabel = new Label(_MRParentChFilterGroup, SWT.NONE);
    _MRParentChFFLabel.setText("Fault Family:");
    _MRParentChFFCombo = new Combo(_MRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFFCombo.setLayoutData(gd);
    _MRParentChFFCombo.addListener(SWT.Selection, _updateMRParentChFF);
    _MRParentChFMLabel = new Label(_MRParentChFilterGroup, SWT.NONE);
    _MRParentChFMLabel.setText("Fault Member:");
    _MRParentChFMCombo = new Combo(_MRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFMCombo.setLayoutData(gd);
    _MRParentChFMCombo.addListener(SWT.Selection, _updateMRParentCh);
    _MRParentChFCLabel = new Label(_MRParentChFilterGroup, SWT.NONE);
    _MRParentChFCLabel.setText("Fault Code:");
    _MRParentChFCCombo = new Combo(_MRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFCCombo.setLayoutData(gd);
    _MRParentChFCCombo.addListener(SWT.Selection, _updateMRParentCh);
    _MRParentChFilterLabel = new Label(_MRParentChFilterGroup, SWT.NONE);
    _MRParentChFilterLabel.setText("Filter RegEx:");
    _MRParentChFilterText = new Text(_MRParentChFilterGroup, SWT.BORDER);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _MRParentChFilterText.setLayoutData(gd);
    _MRParentChFilterText.addListener(SWT.Modify, _updateMRParentCh);
    _MRParentChAlarmList = new Table(_MRParentChGroup, SWT.BORDER);
    gd = new GridData();
    gd.verticalAlignment = SWT.FILL;
    gd.horizontalAlignment = SWT.FILL;
    gd.grabExcessVerticalSpace = true;
    gd.grabExcessHorizontalSpace = true;
    _MRParentChAlarmList.setLayoutData(gd);
    _MRParentChAlarmList.addListener(SWT.KeyUp, _addRule);
    _MRParentChAlarmList.addListener(SWT.MouseDoubleClick, _addRule);
    _MRParentErrorMessageLabel = new Label(_MRParentGroup, SWT.NONE);
    _MRParentErrorMessageLabel.setText("");
    _MRParentErrorMessageLabel.setForeground(getViewSite().getShell().getDisplay().getSystemColor(SWT.COLOR_RED));
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.horizontalSpan = 2;
    _MRParentErrorMessageLabel.setLayoutData(gd);
}
Also used : IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) Group(org.eclipse.swt.widgets.Group) SelectionListener(org.eclipse.swt.events.SelectionListener) Listener(org.eclipse.swt.widgets.Listener) Table(org.eclipse.swt.widgets.Table) TreeItem(org.eclipse.swt.widgets.TreeItem) Triplet(cern.laser.business.data.Triplet) Label(org.eclipse.swt.widgets.Label) ErrorDialog(org.eclipse.jface.dialogs.ErrorDialog) Combo(org.eclipse.swt.widgets.Combo) Text(org.eclipse.swt.widgets.Text) IllegalOperationException(cl.utfsm.acs.acg.core.IllegalOperationException) ReductionRule(cl.utfsm.acs.acg.core.ReductionRule) GridLayout(org.eclipse.swt.layout.GridLayout) Button(org.eclipse.swt.widgets.Button) Alarm(cern.laser.business.data.Alarm) GridData(org.eclipse.swt.layout.GridData) Event(org.eclipse.swt.widgets.Event) SelectionEvent(org.eclipse.swt.events.SelectionEvent)

Example 3 with ReductionRule

use of cl.utfsm.acs.acg.core.ReductionRule in project ACS by ACS-Community.

the class ReductionsView method sortMultiReductionRuleList.

public void sortMultiReductionRuleList(TreeItem iTree) {
    List<ReductionRule> rrList = _reductionManager.getMultiReductionRules();
    List<ReductionRule> sortedRRList = new ArrayList<ReductionRule>();
    List<String> tmp = new ArrayList<String>();
    for (ReductionRule rr : rrList) {
        Triplet t = rr.getParent().getTriplet();
        String name = "<" + t.getFaultFamily() + "," + t.getFaultMember() + "," + t.getFaultCode() + ">";
        tmp.add(name);
    }
    Collections.sort(tmp, IGNORE_CASE_ORDER);
    for (String srr : tmp) for (ReductionRule rr : rrList) {
        Triplet t = rr.getParent().getTriplet();
        String name = "<" + t.getFaultFamily() + "," + t.getFaultMember() + "," + t.getFaultCode() + ">";
        if (name.compareTo(srr) == 0)
            sortedRRList.add(rr);
    }
    rrList = sortedRRList;
    for (ReductionRule rule : rrList) {
        TreeItem kTree = new TreeItem(iTree, SWT.NONE);
        Triplet t = rule.getParent().getTriplet();
        kTree.setText("<" + t.getFaultFamily() + "," + t.getFaultMember() + "," + t.getFaultCode() + ">");
        kTree.setData(NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA);
    }
}
Also used : TreeItem(org.eclipse.swt.widgets.TreeItem) Triplet(cern.laser.business.data.Triplet) ArrayList(java.util.ArrayList) ReductionRule(cl.utfsm.acs.acg.core.ReductionRule)

Example 4 with ReductionRule

use of cl.utfsm.acs.acg.core.ReductionRule in project ACS by ACS-Community.

the class ReductionsView method createNRParentWidgets.

private void createNRParentWidgets() {
    _updateNRParentFF = new Listener() {

        public void handleEvent(Event event) {
            _NRParentFMCombo.removeAll();
            FaultMember[] fml = _alarmManager.getFaultFamily(_NRParentFFCombo.getText()).getFaultMember();
            for (int j = 0; j < fml.length; j++) {
                _NRParentFMCombo.add(fml[j].getName());
            }
            _NRParentFCCombo.removeAll();
            FaultCode[] fcl = _alarmManager.getFaultFamily(_NRParentFFCombo.getText()).getFaultCode();
            for (int j = 0; j < fcl.length; j++) {
                _NRParentFCCombo.add(String.valueOf(fcl[j].getValue()));
            }
            _NRParentErrorMessageLabel.setText("Please choose a Fault Member and a Fault Code.");
        }
    };
    _updateNRParent = new Listener() {

        public void handleEvent(Event event) {
            if (_tree.getSelection() == null || _tree.getSelection().length == 0)
                return;
            NodeType type = (NodeType) _tree.getSelection()[0].getData();
            if (type != NodeType.NODE_REDUCTION_PARENT_DATA)
                return;
            if (_NRParentFMCombo.getText().isEmpty()) {
                _NRParentErrorMessageLabel.setText("Please choose a Fault Member.");
                return;
            }
            if (_NRParentFCCombo.getText().isEmpty()) {
                _NRParentErrorMessageLabel.setText("Please choose a Fault Code.");
                return;
            }
            String[] tr = getTriplet(_tree.getSelection()[0].getText());
            ReductionRule nrr = _reductionManager.getNRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
            ReductionRule nrr2 = _reductionManager.getNRParentByTriplet(_NRParentFFCombo.getText(), _NRParentFMCombo.getText(), Integer.parseInt(_NRParentFCCombo.getText()));
            Alarm parent = null;
            Alarm nParent;
            fillNRParentChAlarmList(_NRParentFFCombo.getText(), _NRParentFMCombo.getText(), Integer.parseInt(_NRParentFCCombo.getText()));
            if (nrr == null) {
                _NRParentErrorMessageLabel.setText("There's no Reduction Rule (no children) for the selected Alarm.");
                return;
            } else
                parent = nrr.getParent();
            if (nrr2 == null)
                nParent = _alarmManager.getAlarm(new String(_NRParentFFCombo.getText() + ":" + _NRParentFMCombo.getText() + ":" + _NRParentFCCombo.getText()));
            else {
                nParent = nrr2.getParent();
                if (nrr != nrr2) {
                    ErrorDialog edialog = new ErrorDialog(ReductionsView.this.getViewSite().getShell(), "Reduction Rule Already Exists", "The reduction rule you are trying to create already exists", new Status(IStatus.ERROR, "cl.utfsm.acs.acg", "The reduction rule parent already exists"), IStatus.ERROR);
                    edialog.setBlockOnOpen(true);
                    edialog.open();
                    return;
                }
            }
            if (parent != null) {
                String[] ch = parent.getNodeChildren();
                //Remove all Children from nrr and add them to nrr2.
                for (int i = 0; i < ch.length; i++) {
                    Alarm aCh = _alarmManager.getAlarm(ch[i]);
                    if (aCh != null) {
                        try {
                            if (!_reductionManager.deleteNodeReductionRule(parent, aCh)) {
                                _NRParentErrorMessageLabel.setText("One or more children alarms didn't exist.");
                                continue;
                            }
                            _reductionManager.addNodeReductionRule(nParent, aCh);
                        } catch (IllegalOperationException e) {
                            _NRParentErrorMessageLabel.setText("The parent alarm didn't exist.");
                        }
                    }
                }
                _tree.getSelection()[0].setText("<" + nParent.getAlarmId().replace(':', ',') + ">");
                _NRParentErrorMessageLabel.setText("");
                if (tr[0].compareTo(_NRParentFFCombo.getText()) != 0 || tr[1].compareTo(_NRParentFMCombo.getText()) != 0 || tr[2].compareTo(_NRParentFCCombo.getText()) != 0) {
                    sortReductionRulesList();
                    Triplet t = nParent.getTriplet();
                    selectElementFromTree("<" + t.getFaultFamily() + "," + t.getFaultMember() + "," + t.getFaultCode() + ">", true);
                }
            }
        }
    };
    _updateNRParentChFF = new Listener() {

        public void handleEvent(Event event) {
            _NRParentChFMCombo.removeAll();
            _NRParentChFMCombo.add("Any");
            if (_NRParentChFFCombo.getText().compareTo("Any") != 0) {
                FaultMember[] fml = _alarmManager.getFaultFamily(_NRParentChFFCombo.getText()).getFaultMember();
                for (int j = 0; j < fml.length; j++) {
                    _NRParentChFMCombo.add(fml[j].getName());
                }
            }
            _NRParentChFMCombo.select(0);
            _NRParentChFCCombo.removeAll();
            _NRParentChFCCombo.add("Any");
            if (_NRParentChFFCombo.getText().compareTo("Any") != 0) {
                FaultCode[] fcl = _alarmManager.getFaultFamily(_NRParentChFFCombo.getText()).getFaultCode();
                for (int j = 0; j < fcl.length; j++) {
                    _NRParentChFCCombo.add(String.valueOf(fcl[j].getValue()));
                }
            }
            _NRParentChFCCombo.select(0);
            TreeItem[] tmp = _tree.getSelection();
            if (tmp == null || tmp.length == 0)
                return;
            TreeItem item = tmp[0];
            String[] triplet = getTriplet(item.getText());
            fillNRParentChAlarmList(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
        }
    };
    _updateNRParentCh = new Listener() {

        public void handleEvent(Event event) {
            TreeItem[] tmp = _tree.getSelection();
            if (tmp == null || tmp.length == 0)
                return;
            TreeItem item = tmp[0];
            String[] triplet = getTriplet(item.getText());
            fillNRParentChAlarmList(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
        }
    };
    _NRParentGroup = new Group(_compInitial, SWT.SHADOW_ETCHED_IN);
    GridLayout gl = new GridLayout();
    gl.numColumns = 1;
    GridData gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.verticalAlignment = SWT.FILL;
    _NRParentGroup.setLayout(gl);
    _NRParentGroup.setLayoutData(gd);
    _NRParentFtGroup = new Group(_NRParentGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 2;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentFtGroup.setLayout(gl);
    _NRParentFtGroup.setLayoutData(gd);
    _NRParentFtGroup.setText("Parent Alarm");
    _NRParentFFLabel = new Label(_NRParentFtGroup, SWT.NONE);
    _NRParentFFLabel.setText("Fault Family:");
    _NRParentFFCombo = new Combo(_NRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentFFCombo.setLayoutData(gd);
    _NRParentFFCombo.addListener(SWT.Selection, _updateNRParentFF);
    _NRParentFMLabel = new Label(_NRParentFtGroup, SWT.NONE);
    _NRParentFMLabel.setText("Fault Member:");
    _NRParentFMCombo = new Combo(_NRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentFMCombo.setLayoutData(gd);
    _NRParentFMCombo.addListener(SWT.Selection, _updateNRParent);
    _NRParentFCLabel = new Label(_NRParentFtGroup, SWT.NONE);
    _NRParentFCLabel.setText("Fault Code:");
    _NRParentFCCombo = new Combo(_NRParentFtGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentFCCombo.setLayoutData(gd);
    _NRParentFCCombo.addListener(SWT.Selection, _updateNRParent);
    //
    _NRParentChGroup = new Group(_NRParentGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 1;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.verticalAlignment = SWT.FILL;
    _NRParentChGroup.setLayout(gl);
    _NRParentChGroup.setLayoutData(gd);
    _NRParentChGroup.setText("Alarms to Hide");
    _NRParentChFilterGroup = new Group(_NRParentChGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 2;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFilterGroup.setLayout(gl);
    _NRParentChFilterGroup.setLayoutData(gd);
    _NRParentChFilterGroup.setText("Filter Options");
    _NRParentChFilterLevelGroup = new Group(_NRParentChFilterGroup, SWT.SHADOW_ETCHED_IN);
    gl = new GridLayout();
    gl.numColumns = 3;
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalSpan = 2;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFilterLevelGroup.setLayout(gl);
    _NRParentChFilterLevelGroup.setLayoutData(gd);
    _NRParentChFilterLevelGroup.setText("Show");
    _NRParentChAllRadio = new Button(_NRParentChFilterLevelGroup, SWT.RADIO);
    _NRParentChAllRadio.setText("All");
    _NRParentChAllRadio.addListener(SWT.Selection, _updateNRParentCh);
    _NRParentChSelectedRadio = new Button(_NRParentChFilterLevelGroup, SWT.RADIO);
    _NRParentChSelectedRadio.setText("Selected");
    _NRParentChSelectedRadio.addListener(SWT.Selection, _updateNRParentCh);
    _NRParentChUnselectedRadio = new Button(_NRParentChFilterLevelGroup, SWT.RADIO);
    _NRParentChUnselectedRadio.setText("Unselected");
    _NRParentChUnselectedRadio.addListener(SWT.Selection, _updateNRParentCh);
    _NRParentChFFLabel = new Label(_NRParentChFilterGroup, SWT.NONE);
    _NRParentChFFLabel.setText("Fault Family:");
    _NRParentChFFCombo = new Combo(_NRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFFCombo.setLayoutData(gd);
    _NRParentChFFCombo.addListener(SWT.Selection, _updateNRParentChFF);
    _NRParentChFMLabel = new Label(_NRParentChFilterGroup, SWT.NONE);
    _NRParentChFMLabel.setText("Fault Member:");
    _NRParentChFMCombo = new Combo(_NRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFMCombo.setLayoutData(gd);
    _NRParentChFMCombo.addListener(SWT.Selection, _updateNRParentCh);
    _NRParentChFCLabel = new Label(_NRParentChFilterGroup, SWT.NONE);
    _NRParentChFCLabel.setText("Fault Code:");
    _NRParentChFCCombo = new Combo(_NRParentChFilterGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFCCombo.setLayoutData(gd);
    _NRParentChFCCombo.addListener(SWT.Selection, _updateNRParentCh);
    _NRParentChFilterLabel = new Label(_NRParentChFilterGroup, SWT.NONE);
    _NRParentChFilterLabel.setText("Filter RegEx:");
    _NRParentChFilterText = new Text(_NRParentChFilterGroup, SWT.BORDER);
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    _NRParentChFilterText.setLayoutData(gd);
    _NRParentChFilterText.addListener(SWT.Modify, _updateNRParentCh);
    _NRParentChAlarmList = new Table(_NRParentChGroup, SWT.BORDER);
    gd = new GridData();
    gd.verticalAlignment = SWT.FILL;
    gd.horizontalAlignment = SWT.FILL;
    gd.grabExcessVerticalSpace = true;
    gd.grabExcessHorizontalSpace = true;
    _NRParentChAlarmList.setLayoutData(gd);
    _NRParentChAlarmList.addListener(SWT.KeyUp, _addRule);
    _NRParentChAlarmList.addListener(SWT.MouseDoubleClick, _addRule);
    _NRParentErrorMessageLabel = new Label(_NRParentGroup, SWT.NONE);
    _NRParentErrorMessageLabel.setText("");
    _NRParentErrorMessageLabel.setForeground(getViewSite().getShell().getDisplay().getSystemColor(SWT.COLOR_RED));
    gd = new GridData();
    gd.grabExcessHorizontalSpace = true;
    gd.horizontalAlignment = SWT.FILL;
    gd.horizontalSpan = 2;
    _NRParentErrorMessageLabel.setLayoutData(gd);
}
Also used : IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) Group(org.eclipse.swt.widgets.Group) SelectionListener(org.eclipse.swt.events.SelectionListener) Listener(org.eclipse.swt.widgets.Listener) Table(org.eclipse.swt.widgets.Table) TreeItem(org.eclipse.swt.widgets.TreeItem) Triplet(cern.laser.business.data.Triplet) Label(org.eclipse.swt.widgets.Label) ErrorDialog(org.eclipse.jface.dialogs.ErrorDialog) Combo(org.eclipse.swt.widgets.Combo) Text(org.eclipse.swt.widgets.Text) IllegalOperationException(cl.utfsm.acs.acg.core.IllegalOperationException) ReductionRule(cl.utfsm.acs.acg.core.ReductionRule) GridLayout(org.eclipse.swt.layout.GridLayout) Button(org.eclipse.swt.widgets.Button) Alarm(cern.laser.business.data.Alarm) GridData(org.eclipse.swt.layout.GridData) Event(org.eclipse.swt.widgets.Event) SelectionEvent(org.eclipse.swt.events.SelectionEvent)

Example 5 with ReductionRule

use of cl.utfsm.acs.acg.core.ReductionRule in project ACS by ACS-Community.

the class ReductionsView method createViewWidgets.

private void createViewWidgets(Composite parent) {
    _addElement = new Listener() {

        public void handleEvent(Event event) {
            TreeItem sel = null;
            TreeItem item = null;
            if (_tree.getSelection() == null || _tree.getSelection().length == 0)
                return;
            sel = _tree.getSelection()[0];
            NodeType type = (NodeType) sel.getData();
            item = sel;
            if (type == NodeType.NODE_REDUCTION_PARENT_DATA || type == NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA)
                item = sel.getParentItem();
            type = (NodeType) item.getData();
            java.util.List<FaultFamily> ffs = _alarmManager.getAllAlarms();
            java.util.List<String> ffnames = new ArrayList<String>();
            for (FaultFamily ff : ffs) {
                if (ff.getFaultCodeCount() > 0 && ff.getFaultMemberCount() > 0)
                    ffnames.add(ff.getName());
            }
            Collections.sort(ffnames, IGNORE_CASE_ORDER);
            ListDialog dialog = new ListDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell());
            dialog.setTitle("Create Reduction Rule");
            dialog.setMessage("Select Parent Fault Family");
            dialog.setBlockOnOpen(true);
            dialog.setInput(ffnames);
            dialog.setContentProvider(new ArrayContentProvider());
            dialog.setLabelProvider(new LabelProvider());
            dialog.open();
            if (dialog.getReturnCode() == InputDialog.CANCEL)
                return;
            String ffname = (String) dialog.getResult()[0];
            FaultMember[] fms = _alarmManager.getFaultFamily(ffname).getFaultMember();
            java.util.List<String> fmnames = new ArrayList<String>();
            for (FaultMember fm : fms) {
                fmnames.add(fm.getName());
            }
            Collections.sort(ffnames, IGNORE_CASE_ORDER);
            dialog = new ListDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell());
            dialog.setTitle("Create Reduction Rule");
            dialog.setMessage("Select Parent Fault Member");
            dialog.setBlockOnOpen(true);
            dialog.setInput(fmnames);
            dialog.setContentProvider(new ArrayContentProvider());
            dialog.setLabelProvider(new LabelProvider());
            dialog.open();
            if (dialog.getReturnCode() == InputDialog.CANCEL)
                return;
            String fmname = (String) dialog.getResult()[0];
            FaultCode[] fcs = _alarmManager.getFaultFamily(ffname).getFaultCode();
            java.util.List<String> fcvalues = new ArrayList<String>();
            for (FaultCode fc : fcs) {
                fcvalues.add(Integer.toString(fc.getValue()));
            }
            Collections.sort(ffnames, IGNORE_CASE_ORDER);
            dialog = new ListDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell());
            dialog.setTitle("Create Reduction Rule");
            dialog.setMessage("Select Parent Fault Code");
            dialog.setBlockOnOpen(true);
            dialog.setInput(fcvalues);
            dialog.setContentProvider(new ArrayContentProvider());
            dialog.setLabelProvider(new LabelProvider());
            dialog.open();
            if (dialog.getReturnCode() == InputDialog.CANCEL)
                return;
            String fcvalue = (String) dialog.getResult()[0];
            ReductionRule parent = null;
            boolean error = false;
            if (type == NodeType.NODE_REDUCTION) {
                parent = _reductionManager.getNRParentByTriplet(ffname, fmname, Integer.parseInt(fcvalue));
                TreeItem[] chs = _tree.getItems()[0].getItems();
                for (TreeItem ch : chs) {
                    if (ch.getText().compareTo("<" + ffname + "," + fmname + "," + fcvalue + ">") == 0)
                        error = true;
                }
            } else if (type == NodeType.MULTIPLICITY_REDUCTION) {
                parent = _reductionManager.getMRParentByTriplet(ffname, fmname, Integer.parseInt(fcvalue));
                TreeItem[] chs = _tree.getItems()[1].getItems();
                for (TreeItem ch : chs) {
                    if (ch.getText().compareTo("<" + ffname + "," + fmname + "," + fcvalue + ">") == 0)
                        error = true;
                }
            }
            if (error || parent != null) {
                ErrorDialog edialog = new ErrorDialog(ReductionsView.this.getViewSite().getShell(), "Reduction Rule Already Exists", "The reduction rule you are trying to create already exists", new Status(IStatus.ERROR, "cl.utfsm.acs.acg", "The reduction rule parent already exists"), IStatus.ERROR);
                edialog.setBlockOnOpen(true);
                edialog.open();
                return;
            } else
                parent = new ReductionRule(_alarmManager.getAlarm(ffname + ":" + fmname + ":" + fcvalue));
            TreeItem pTree = new TreeItem(item, SWT.NONE);
            pTree.setText("<" + ffname + "," + fmname + "," + fcvalue + ">");
            if (type == NodeType.NODE_REDUCTION) {
                pTree.setData(NodeType.NODE_REDUCTION_PARENT_DATA);
                parent.setIsNodeReduction(true);
            } else if (type == NodeType.MULTIPLICITY_REDUCTION) {
                pTree.setData(NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA);
                parent.setIsNodeReduction(false);
            }
            _tree.setSelection(pTree);
            Event e = new Event();
            _tree.notifyListeners(SWT.Selection, e);
        }
    };
    _addRule = new Listener() {

        public void handleEvent(Event event) {
            Table t = (Table) event.widget;
            if (event.type == SWT.KeyUp)
                if (!(event.keyCode == SWT.CR || event.keyCode == ' '))
                    return;
            if (event.type == SWT.MouseDoubleClick) {
                Point pt = new Point(event.x, event.y);
                if (t.getItem(pt) == null)
                    return;
            }
            boolean isNode;
            if (_tree.getSelection() == null || _tree.getSelection().length == 0)
                return;
            TreeItem tmp1 = _tree.getSelection()[0];
            if ((NodeType) _tree.getSelection()[0].getData() == NodeType.NODE_REDUCTION_PARENT_DATA)
                isNode = true;
            else if ((NodeType) _tree.getSelection()[0].getData() == NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA)
                isNode = false;
            else
                return;
            String[] tr = getTriplet(tmp1.getText());
            ReductionRule parent;
            if (isNode)
                parent = _reductionManager.getNRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
            else
                parent = _reductionManager.getMRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
            if (t.getSelection() == null || t.getSelection().length == 0)
                return;
            TableItem item = t.getSelection()[0];
            Alarm p, c;
            if (parent == null) {
                if (isNode)
                    p = _alarmManager.getAlarm(_NRParentFFCombo.getText() + ":" + _NRParentFMCombo.getText() + ":" + _NRParentFCCombo.getText());
                else
                    p = _alarmManager.getAlarm(_MRParentFFCombo.getText() + ":" + _MRParentFMCombo.getText() + ":" + _MRParentFCCombo.getText());
                if (p == null) {
                    if (isNode)
                        _NRParentErrorMessageLabel.setText("Couldn't find parent alarm.");
                    else
                        _MRParentErrorMessageLabel.setText("Couldn't find parent alarm.");
                    return;
                }
                c = null;
            } else {
                p = parent.getParent();
                c = parent.getChild(item.getText());
            }
            if (c == null) {
                //Add child
                c = _alarmManager.getAlarm(item.getText());
                if (c == null) {
                    if (isNode)
                        _NRParentErrorMessageLabel.setText("Couldn't find child alarm.");
                    else
                        _MRParentErrorMessageLabel.setText("Couldn't find child alarm.");
                    return;
                }
                try {
                    if (isNode)
                        _reductionManager.addNodeReductionRule(p, c);
                    else {
                        _reductionManager.addMultiReductionRule(p, c);
                        if (parent == null)
                            _reductionManager.updateMultiThreshold(p, Integer.parseInt(_MRParentThresholdText.getText()));
                    }
                    item.setImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_TICKET));
                    if (parent == null)
                        _tree.getSelection()[0].setText("<" + p.getAlarmId().replace(':', ',') + ">");
                    if (isNode)
                        _NRParentErrorMessageLabel.setText("");
                    else
                        _MRParentErrorMessageLabel.setText("");
                } catch (IllegalOperationException e) {
                    if (isNode)
                        _NRParentErrorMessageLabel.setText(e.getMessage());
                    else
                        _MRParentErrorMessageLabel.setText(e.getMessage());
                }
            } else {
                //Remove child
                try {
                    //ReductionRule rr;
                    if (isNode) {
                        _reductionManager.deleteNodeReductionRule(p, c);
                    //rr = _reductionManager.getNRParentByTriplet(p.getTriplet().getFaultFamily(), p.getTriplet().getFaultMember(), p.getTriplet().getFaultCode());
                    } else {
                        _reductionManager.deleteMultiReductionRule(p, c);
                    //rr = _reductionManager.getMRParentByTriplet(p.getTriplet().getFaultFamily(), p.getTriplet().getFaultMember(), p.getTriplet().getFaultCode());
                    }
                } catch (IllegalOperationException e) {
                    e.printStackTrace();
                }
                item.setImage((org.eclipse.swt.graphics.Image) null);
            }
            fillMRParentChAlarmList(tr[0], tr[1], Integer.parseInt(tr[2]));
            sortReductionRulesList();
            Triplet t2 = p.getTriplet();
            if (isNode)
                selectElementFromTree("<" + t2.getFaultFamily() + "," + t2.getFaultMember() + "," + t2.getFaultCode() + ">", true);
            else
                selectElementFromTree("<" + t2.getFaultFamily() + "," + t2.getFaultMember() + "," + t2.getFaultCode() + ">", false);
        }
    };
    _removeElement = new Listener() {

        public void handleEvent(Event event) {
            boolean choice = MessageDialog.openQuestion(ReductionsView.this.getViewSite().getShell(), "Confirmation", "Are you sure you want to delete this element");
            if (choice == true) {
                TreeItem sel = null;
                if (_tree.getSelection() == null || _tree.getSelection().length == 0)
                    return;
                NodeType type = (NodeType) _tree.getSelection()[0].getData();
                if (type == NodeType.NODE_REDUCTION || type == NodeType.MULTIPLICITY_REDUCTION)
                    return;
                TreeItem item = _tree.getSelection()[0];
                String[] tr = getTriplet(item.getText());
                try {
                    if (type == NodeType.NODE_REDUCTION_PARENT_DATA) {
                        //Remove all the NODE REDUCTION Rules in which this node is parent.
                        ReductionRule rr = _reductionManager.getNRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
                        if (rr != null) {
                            Alarm p = rr.getParent();
                            List<Alarm> chL = rr.getChildren();
                            Alarm[] als = new Alarm[chL.size()];
                            chL.toArray(als);
                            for (int i = 0; i < als.length; i++) _reductionManager.deleteNodeReductionRule(p, als[i]);
                        }
                    } else if (type == NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA) {
                        //Remove all the MULTIPLICITY REDUCTION Rules in which this node is a parent.
                        ReductionRule rr = _reductionManager.getMRParentByTriplet(tr[0], tr[1], Integer.parseInt(tr[2]));
                        if (rr != null) {
                            Alarm p = rr.getParent();
                            List<Alarm> chL = rr.getChildren();
                            Alarm[] als = new Alarm[chL.size()];
                            chL.toArray(als);
                            for (int i = 0; i < als.length; i++) _reductionManager.deleteMultiReductionRule(p, als[i]);
                        }
                    }
                } catch (NullPointerException e) {
                    ErrorDialog error = new ErrorDialog(ReductionsView.this.getViewSite().getShell(), "Cannot delete the item", e.getMessage(), new Status(IStatus.ERROR, "cl.utfsm.acs.acg", e.getMessage()), IStatus.ERROR);
                    error.setBlockOnOpen(true);
                    error.open();
                } catch (IllegalOperationException e) {
                    ErrorDialog error = new ErrorDialog(ReductionsView.this.getViewSite().getShell(), "Cannot delete the item", e.getMessage(), new Status(IStatus.ERROR, "cl.utfsm.acs.acg", e.getMessage()), IStatus.ERROR);
                    error.setBlockOnOpen(true);
                    error.open();
                }
                sel = _tree.getSelection()[0].getParentItem();
                _tree.getSelection()[0].dispose();
                _tree.setSelection(sel);
                Event e = new Event();
                _tree.notifyListeners(SWT.Selection, e);
            }
        }
    };
    _sash = new SashForm(parent, SWT.NONE);
    _sash.setLayout(new FillLayout());
    _reductionsComp = new Composite(_sash, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    _reductionsComp.setLayout(layout);
    _treeGroup = new Group(_reductionsComp, SWT.SHADOW_ETCHED_IN);
    GridData gd = new GridData();
    gd.horizontalAlignment = SWT.FILL;
    gd.verticalAlignment = SWT.FILL;
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    _treeGroup.setLayoutData(gd);
    GridLayout gl = new GridLayout();
    gl.numColumns = 1;
    _treeGroup.setLayout(gl);
    _treeGroup.setText("Reduction Rules List");
    _tree = new Tree(_treeGroup, SWT.VIRTUAL | SWT.BORDER);
    gd = new GridData();
    gd.verticalAlignment = SWT.FILL;
    gd.horizontalAlignment = SWT.FILL;
    gd.grabExcessVerticalSpace = true;
    gd.grabExcessHorizontalSpace = true;
    _tree.setLayoutData(gd);
    Menu treePopUp = new Menu(parent);
    /*
		MenuItem treePopUpDelete = new MenuItem(treePopUp,SWT.PUSH);
		treePopUpDelete.setText("Delete");
		treePopUpDelete.addListener(SWT.Selection, _removeElement);
		MenuItem treePopUpAddRule = new MenuItem(treePopUp,SWT.PUSH);
		treePopUpAddRule.setText("Add Rule");
		treePopUpAddRule.addListener(SWT.Selection, _addElement);
		MenuItem treePopUpAddChildren = new MenuItem(treePopUp,SWT.PUSH);
		treePopUpAddChildren.setText("Add Children");
		//treePopUpAddChildren.addListener(SWT.Selection, _addElement);
		*/
    _tree.setMenu(treePopUp);
    treePopUp.addListener(SWT.Show, new Listener() {

        public void handleEvent(Event e) {
            TreeItem sel = _tree.getSelection()[0];
            NodeType type = (NodeType) sel.getData();
            Menu treePopUp = _tree.getMenu();
            MenuItem[] items = treePopUp.getItems();
            for (int i = 0; i < items.length; i++) items[i].dispose();
            MenuItem mitem;
            switch(type) {
                case NODE_REDUCTION:
                    mitem = new MenuItem(treePopUp, SWT.PUSH);
                    mitem.setText("Add Node Reduction Rule Parent");
                    mitem.addListener(SWT.Selection, _addElement);
                    break;
                case NODE_REDUCTION_PARENT_DATA:
                    mitem = new MenuItem(treePopUp, SWT.PUSH);
                    mitem.setText("Delete Node Reduction Rules for this parent");
                    mitem.addListener(SWT.Selection, _removeElement);
                    break;
                case MULTIPLICITY_REDUCTION:
                    mitem = new MenuItem(treePopUp, SWT.PUSH);
                    mitem.setText("Add Multiplicity Reduction Rule Parent");
                    mitem.addListener(SWT.Selection, _addElement);
                    break;
                case MULTIPLICITY_REDUCTION_PARENT_DATA:
                    mitem = new MenuItem(treePopUp, SWT.PUSH);
                    mitem.setText("Delete Multiplicity Reduction Rules for this parent");
                    mitem.addListener(SWT.Selection, _removeElement);
                    break;
                default:
                    for (int i = 0; i < items.length; i++) items[i].dispose();
                    break;
            }
        }
    });
    _tree.addSelectionListener(new SelectionListener() {

        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }

        public void widgetSelected(SelectionEvent e) {
            TreeItem[] tmp = ((Tree) e.widget).getSelection();
            if (tmp == null || tmp.length == 0)
                return;
            TreeItem item = tmp[0];
            NodeType type = (NodeType) item.getData();
            Control c = _compInitial.getChildren()[0];
            if (c instanceof Label) {
                c.dispose();
                _compInitial.layout();
                c = _compInitial.getChildren()[0];
            }
            if (type == NodeType.NODE_REDUCTION) {
                _NRParentGroup.setVisible(false);
                ((GridData) _NRParentGroup.getLayoutData()).exclude = true;
                _MRParentGroup.setVisible(false);
                ((GridData) _MRParentGroup.getLayoutData()).exclude = true;
            } else if (type == NodeType.NODE_REDUCTION_PARENT_DATA) {
                _NRParentGroup.setVisible(true);
                ((GridData) _NRParentGroup.getLayoutData()).exclude = false;
                _MRParentGroup.setVisible(false);
                ((GridData) _MRParentGroup.getLayoutData()).exclude = true;
                String[] triplet = getTriplet(item.getText());
                fillNRParentWidgets(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
                _NRParentGroup.moveAbove(c);
                _compInitial.layout();
            } else if (type == NodeType.MULTIPLICITY_REDUCTION) {
                _NRParentGroup.setVisible(false);
                ((GridData) _NRParentGroup.getLayoutData()).exclude = true;
                _MRParentGroup.setVisible(false);
                ((GridData) _MRParentGroup.getLayoutData()).exclude = true;
            } else if (type == NodeType.MULTIPLICITY_REDUCTION_PARENT_DATA) {
                _NRParentGroup.setVisible(false);
                ((GridData) _NRParentGroup.getLayoutData()).exclude = true;
                _MRParentGroup.setVisible(true);
                ((GridData) _MRParentGroup.getLayoutData()).exclude = false;
                String[] triplet = getTriplet(item.getText());
                fillMRParentWidgets(triplet[0], triplet[1], Integer.parseInt(triplet[2]));
                _MRParentGroup.moveAbove(c);
                _compInitial.layout();
            }
        }
    });
    /* Top widget of the right side */
    _compInitial = new Composite(_sash, SWT.NONE);
    _compInitial.setLayout(new GridLayout());
    new Label(_compInitial, SWT.NONE).setText("Select a reduction rule");
    /* NR/MR Details */
    createNRParentWidgets();
    createMRParentWidgets();
    _NRParentGroup.setVisible(false);
    _MRParentGroup.setVisible(false);
    _sash.setWeights(new int[] { 3, 5 });
}
Also used : FaultCode(alma.acs.alarmsystem.generated.FaultCode) Group(org.eclipse.swt.widgets.Group) SelectionListener(org.eclipse.swt.events.SelectionListener) Listener(org.eclipse.swt.widgets.Listener) TreeItem(org.eclipse.swt.widgets.TreeItem) TableItem(org.eclipse.swt.widgets.TableItem) Label(org.eclipse.swt.widgets.Label) GridLayout(org.eclipse.swt.layout.GridLayout) Control(org.eclipse.swt.widgets.Control) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Tree(org.eclipse.swt.widgets.Tree) List(java.util.List) ArrayList(java.util.ArrayList) Menu(org.eclipse.swt.widgets.Menu) FaultMember(alma.acs.alarmsystem.generated.FaultMember) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) Table(org.eclipse.swt.widgets.Table) Composite(org.eclipse.swt.widgets.Composite) Triplet(cern.laser.business.data.Triplet) ErrorDialog(org.eclipse.jface.dialogs.ErrorDialog) MenuItem(org.eclipse.swt.widgets.MenuItem) Point(org.eclipse.swt.graphics.Point) FillLayout(org.eclipse.swt.layout.FillLayout) IllegalOperationException(cl.utfsm.acs.acg.core.IllegalOperationException) ReductionRule(cl.utfsm.acs.acg.core.ReductionRule) Point(org.eclipse.swt.graphics.Point) SashForm(org.eclipse.swt.custom.SashForm) FaultFamily(alma.acs.alarmsystem.generated.FaultFamily) Alarm(cern.laser.business.data.Alarm) ArrayContentProvider(org.eclipse.jface.viewers.ArrayContentProvider) GridData(org.eclipse.swt.layout.GridData) Event(org.eclipse.swt.widgets.Event) SelectionEvent(org.eclipse.swt.events.SelectionEvent) LabelProvider(org.eclipse.jface.viewers.LabelProvider) ListDialog(org.eclipse.ui.dialogs.ListDialog) SelectionListener(org.eclipse.swt.events.SelectionListener)

Aggregations

ReductionRule (cl.utfsm.acs.acg.core.ReductionRule)9 Alarm (cern.laser.business.data.Alarm)7 ArrayList (java.util.ArrayList)7 Triplet (cern.laser.business.data.Triplet)5 TreeItem (org.eclipse.swt.widgets.TreeItem)5 IllegalOperationException (cl.utfsm.acs.acg.core.IllegalOperationException)4 FaultCode (alma.acs.alarmsystem.generated.FaultCode)3 FaultFamily (alma.acs.alarmsystem.generated.FaultFamily)3 FaultMember (alma.acs.alarmsystem.generated.FaultMember)3 IStatus (org.eclipse.core.runtime.IStatus)3 Status (org.eclipse.core.runtime.Status)3 ErrorDialog (org.eclipse.jface.dialogs.ErrorDialog)3 SelectionEvent (org.eclipse.swt.events.SelectionEvent)3 SelectionListener (org.eclipse.swt.events.SelectionListener)3 Point (org.eclipse.swt.graphics.Point)3 GridData (org.eclipse.swt.layout.GridData)3 GridLayout (org.eclipse.swt.layout.GridLayout)3 Event (org.eclipse.swt.widgets.Event)3 Group (org.eclipse.swt.widgets.Group)3 Label (org.eclipse.swt.widgets.Label)3