Example usage for org.eclipse.jface.viewers IStructuredSelection getFirstElement

List of usage examples for org.eclipse.jface.viewers IStructuredSelection getFirstElement

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers IStructuredSelection getFirstElement.

Prototype

public Object getFirstElement();

Source Link

Document

Returns the first element in this selection, or null if the selection is empty.

Usage

From source file:ch.elexis.views.BestellView.java

License:Open Source License

private void makeActions() {
    removeAction = new Action(Messages.getString("BestellView.RemoveArticle")) { //$NON-NLS-1$
        @Override//w  w w.j a v  a2 s . c o  m
        public void run() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if ((sel != null) && (!sel.isEmpty())) {
                if (actBestellung != null) {
                    actBestellung.removeItem((Item) sel.getFirstElement());
                }
                tv.refresh();
            }
        }
    };
    wizardAction = new Action(Messages.getString("BestellView.AutomaticOrder")) { //$NON-NLS-1$
        {
            setToolTipText(Messages.getString("BestellView.CreateAutomaticOrder")); //$NON-NLS-1$
            setImageDescriptor(Images.IMG_WIZARD.getImageDescriptor());
        }

        @Override
        public void run() {
            if (actBestellung == null) {
                setBestellung(new Bestellung(Messages.getString("BestellView.Automatic"), Hub.actUser)); //$NON-NLS-1$
            }
            /*
             * Query<Artikel> qbe=new Query<Artikel>(Artikel.class);
             * qbe.add("Minbestand","<>","0"); List<Artikel> l=qbe.execute();
             */

            int trigger = Hub.globalCfg.get(PreferenceConstants.INVENTORY_ORDER_TRIGGER,
                    PreferenceConstants.INVENTORY_ORDER_TRIGGER_DEFAULT);

            List<Artikel> l = Artikel.getLagerartikel();
            for (Artikel a : l) {
                if ((a == null) || (!a.exists())) {
                    continue;
                }
                // String name = a.getLabel();
                int ist = a.getIstbestand();
                int min = a.getMinbestand();
                int max = a.getMaxbestand();

                boolean order = false;
                switch (trigger) {
                case PreferenceConstants.INVENTORY_ORDER_TRIGGER_BELOW:
                    order = (ist < min);
                    break;
                case PreferenceConstants.INVENTORY_ORDER_TRIGGER_EQUAL:
                    order = (ist <= min);
                    break;
                default:
                    order = (ist < min);
                }
                if (order) {
                    Boolean alreadyOrdered = a.getExt(Bestellung.ISORDERED).equalsIgnoreCase("true");
                    int toOrder = max - ist;
                    if (toOrder > 0 && !alreadyOrdered) {
                        actBestellung.addItem(a, toOrder);
                    }
                }
            }
            tv.refresh(true);
        }
    };
    countAction = new Action(Messages.getString("BestellView.ChangeNumber")) { //$NON-NLS-1$
        @Override
        public void run() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if ((sel != null) && (!sel.isEmpty())) {
                Item it = (Item) sel.getFirstElement();
                int old = it.num;
                InputDialog in = new InputDialog(getViewSite().getShell(),
                        Messages.getString("BestellView.ChangeNumber"), //$NON-NLS-1$
                        Messages.getString("BestellView.EnterNewNumber"), //$NON-NLS-1$
                        Integer.toString(old), null);
                if (in.open() == Dialog.OK) {
                    it.num = Integer.parseInt(in.getValue());
                    tv.refresh(it, true);
                }
            }
        }
    };
    saveAction = new Action(Messages.getString("BestellView.SavelIst")) { //$NON-NLS-1$
        @Override
        public void run() {
            if (actBestellung != null) {
                actBestellung.save();
            }
        }
    };
    newAction = new Action(Messages.getString("BestellView.CreateNewOrder")) { //$NON-NLS-1$
        @Override
        public void run() {
            if (actBestellung != null) {
                actBestellung.save();
            }
            InputDialog dlg = new InputDialog(getViewSite().getShell(),
                    Messages.getString("BestellView.CreateNewOrder"), //$NON-NLS-1$
                    Messages.getString("BestellView.EnterOrderTitle"), //$NON-NLS-1$
                    Messages.getString("BestellView.Automatic"), null); //$NON-NLS-1$
            if (dlg.open() == Dialog.OK) {
                setBestellung(new Bestellung(dlg.getValue(), Hub.actUser));
            } else {
                return;
            }
            tv.refresh();
        }
    };
    printAction = new Action(Messages.getString("BestellView.PrintOrder")) { //$NON-NLS-1$
        @Override
        public void run() {
            if (actBestellung != null) {
                actBestellung.save();
                // make backup of list
                Item[] bkpList = actBestellung.asList().toArray(new Item[0]);

                List<Item> list = actBestellung.asList();
                ArrayList<Item> best = new ArrayList<Item>();
                Kontakt adressat = null;
                Iterator<Item> iter = list.iterator();
                while (iter.hasNext()) {
                    Item it = (Item) iter.next();
                    if (adressat == null) {
                        adressat = it.art.getLieferant();
                        if (!adressat.exists()) {
                            adressat = null;
                            continue;
                        }
                    }
                    if (it.art.getLieferant().getId().equals(adressat.getId())) {
                        best.add(it);
                        iter.remove();
                    }
                }

                try {
                    BestellBlatt bb = (BestellBlatt) getViewSite().getPage().showView(BestellBlatt.ID);
                    bb.createOrder(adressat, best);
                    tv.refresh();
                    // mark ordered articles
                    Bestellung.markAsOrdered(bkpList);
                } catch (PartInitException e) {
                    ExHandler.handle(e);

                }
            }
        }
    };
    sendAction = new Action(Messages.getString("BestellView.SendOrder")) { //$NON-NLS-1$
        @Override
        public void run() {
            if (actBestellung == null)
                return;
            actBestellung.save();
            // make backup of list
            Item[] bkpList = actBestellung.asList().toArray(new Item[0]);

            List<IConfigurationElement> list = Extensions.getExtensions("ch.elexis.Transporter"); //$NON-NLS-1$
            for (IConfigurationElement ic : list) {
                String handler = ic.getAttribute("type"); //$NON-NLS-1$

                if (handler != null && handler.contains("ch.elexis.data.Bestellung")) { //$NON-NLS-1$
                    try {
                        IDataSender sender = (IDataSender) ic.createExecutableExtension("ExporterClass"); //$NON-NLS-1$

                        sender.store(actBestellung);
                        sender.finalizeExport();
                        SWTHelper.showInfo(Messages.getString("BestellView.OrderSentCaption"), //$NON-NLS-1$
                                Messages.getString("BestellView.OrderSentBody")); //$NON-NLS-1$
                        tv.refresh();
                        // mark ordered articles
                        Bestellung.markAsOrdered(bkpList);
                    } catch (CoreException ex) {
                        ExHandler.handle(ex);
                    } catch (XChangeException xx) {
                        SWTHelper.showError(Messages.getString("BestellView.OrderNotPossible"), //$NON-NLS-1$
                                Messages.getString("BestellView.NoAutomaticOrderAvailable") //$NON-NLS-1$
                                        + xx.getLocalizedMessage());

                    }
                }
            }
        }
    };
    loadAction = new Action(Messages.getString("BestellView.OpenOrder")) { //$NON-NLS-1$
        @Override
        public void run() {

            SelectBestellungDialog dlg = new SelectBestellungDialog(getViewSite().getShell());
            dlg.setMessage(Messages.getString("BestellView.SelectOrder")); //$NON-NLS-1$
            dlg.setTitle(Messages.getString("BestellView.ReadOrder")); //$NON-NLS-1$

            if (dlg.open() == Dialog.OK) {
                // js: Only a non-empty result should be used any further.
                if (dlg.getResult().length > 0) {
                    Bestellung res = (Bestellung) dlg.getResult()[0];
                    setBestellung(res);
                }
            }
        }
    };
    printAction.setImageDescriptor(Images.IMG_PRINTER.getImageDescriptor());
    printAction.setToolTipText(Messages.getString("BestellView.PrintOrder")); //$NON-NLS-1$

    newAction.setImageDescriptor(Hub.getImageDescriptor("rsc/plaf/modern/icons/new.png")); //$NON-NLS-1$
    newAction.setToolTipText(Messages.getString("BestellView.CreateNewOrder")); //$NON-NLS-1$
    saveAction.setImageDescriptor(Hub.getImageDescriptor("rsc/save.gif")); //$NON-NLS-1$
    saveAction.setToolTipText(Messages.getString("BestellView.saveOrder")); //$NON-NLS-1$
    sendAction.setImageDescriptor(Images.IMG_NETWORK.getImageDescriptor());
    sendAction.setToolTipText(Messages.getString("BestellView.transmitOrder")); //$NON-NLS-1$
    // loadAction.setImageDescriptor(Hub.getImageDescriptor("rsc/open.gif"));
    loadAction.setImageDescriptor(Images.IMG_IMPORT.getImageDescriptor());
    loadAction.setToolTipText(Messages.getString("BestellView.loadEarlierOrder")); //$NON-NLS-1$

    exportClipboardAction = new Action(Messages.getString("BestellView.copyToClipboard")) { //$NON-NLS-1$
        {
            setToolTipText(Messages.getString("BestellView.copyToClipBioardForGalexis")); //$NON-NLS-1$
        }

        @Override
        public void run() {
            if (actBestellung != null) {
                List<Item> list = actBestellung.asList();
                ArrayList<Item> best = new ArrayList<Item>();
                Kontakt adressat = null;
                Iterator<Item> iter = list.iterator();
                while (iter.hasNext()) {
                    Item it = (Item) iter.next();
                    if (adressat == null) {
                        adressat = it.art.getLieferant();
                        if (!adressat.exists()) {
                            adressat = null;
                            continue;
                        }
                    }
                    if (it.art.getLieferant().getId().equals(adressat.getId())) {
                        best.add(it);
                        iter.remove();
                    }
                }

                StringBuffer export = new StringBuffer();
                for (Item item : best) {
                    String pharmaCode = item.art.get(Artikel.FLD_PHARMACODE);
                    int num = item.num;
                    String name = item.art.getName();
                    String line = pharmaCode + ", " + num + ", " + name; //$NON-NLS-1$ //$NON-NLS-2$

                    export.append(line);
                    export.append(System.getProperty("line.separator")); //$NON-NLS-1$
                }

                String clipboardText = export.toString();
                Clipboard clipboard = new Clipboard(Desk.getDisplay());
                TextTransfer textTransfer = TextTransfer.getInstance();
                Transfer[] transfers = new Transfer[] { textTransfer };
                Object[] data = new Object[] { clipboardText };
                clipboard.setContents(data, transfers);
                clipboard.dispose();
            }
        }
    };
    checkInAction = new Action(Messages.getString("BestellView.CheckInCaption")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_TICK.getImageDescriptor());
            setToolTipText(Messages.getString("BestellView.CheckInBody")); //$NON-NLS-1$
        }

        @Override
        public void run() {
            if (actBestellung != null && actBestellung.exists()) {
                OrderImportDialog dialog = new OrderImportDialog(getSite().getShell(), actBestellung);
                dialog.open();
            } else {
                SWTHelper.alert(Messages.getString("BestellView.NoOrder"), //$NON-NLS-1$
                        Messages.getString("BestellView.NoOrderLoaded")); //$NON-NLS-1$
            }
        }

    };
}

From source file:ch.elexis.views.codesystems.BlockDetailDisplay.java

License:Open Source License

private void makeActions() {
    removeLeistung = new Action(Messages.getString("BlockDetailDisplay.remove")) { //$NON-NLS-1$
        @Override/*from   w  w w.j av a  2s.  co  m*/
        public void run() {
            Leistungsblock lb = (Leistungsblock) ElexisEventDispatcher.getSelected(Leistungsblock.class);
            if (lb != null) {
                IStructuredSelection sel = (IStructuredSelection) lLst.getSelection();
                Object o = sel.getFirstElement();
                if (o != null) {
                    lb.removeElement((ICodeElement) o);
                    lLst.refresh();
                }
            }
        }
    };
    moveUpAction = new Action(Messages.getString("BlockDetailDisplay.moveUp")) { //$NON-NLS-1$
        @Override
        public void run() {
            moveElement(-1);
        }
    };
    moveDownAction = new Action(Messages.getString("BlockDetailDisplay.moveDown")) { //$NON-NLS-1$
        @Override
        public void run() {
            moveElement(1);
        }
    };
    editAction = new Action(Messages.getString("BlockDetailDisplay.changeAction")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_EDIT.getImageDescriptor());
            setToolTipText(Messages.getString("BlockDetailDisplay.changeActionTooltip")); //$NON-NLS-1$
        }

        @Override
        public void run() {
            IStructuredSelection sel = (IStructuredSelection) lLst.getSelection();
            PersistentObject parameter = (PersistentObject) sel.getFirstElement();
            EditEigenleistungUi.executeWithParams(parameter);
        }
    };
}

From source file:ch.elexis.views.LabNotSeenView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {
    parent.setLayout(new FillLayout());
    Table table = new Table(parent, SWT.CHECK | SWT.V_SCROLL);
    for (int i = 0; i < columnHeaders.length; i++) {
        TableColumn tc = new TableColumn(table, SWT.NONE);
        tc.setText(columnHeaders[i]);/*from   w w  w  . ja  v  a  2s. c o m*/
        tc.setWidth(colWidths[i]);
    }
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    tv = new CheckboxTableViewer(table);
    tv.setContentProvider(new LabNotSeenContentProvider());
    tv.setLabelProvider(new LabNotSeenLabelProvider());
    tv.setUseHashlookup(true);
    tv.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(final SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
            if (!sel.isEmpty()) {
                if (sel.getFirstElement() instanceof LabResult) {
                    LabResult lr = (LabResult) sel.getFirstElement();
                    ElexisEventDispatcher.fireSelectionEvent(lr.getPatient());
                }
            }

        }
    });
    tv.addCheckStateListener(new ICheckStateListener() {
        boolean bDaempfung;

        public void checkStateChanged(final CheckStateChangedEvent event) {
            if (bDaempfung == false) {
                bDaempfung = true;
                LabResult lr = (LabResult) event.getElement();
                boolean state = event.getChecked();
                if (state) {
                    if (Hub.acl.request(AccessControlDefaults.LAB_SEEN)) {
                        lr.removeFromUnseen();
                    } else {
                        tv.setChecked(lr, false);
                    }
                } else {
                    lr.addToUnseen();
                }
                bDaempfung = false;
            }
        }

    });
    makeActions();
    ViewMenus menu = new ViewMenus(getViewSite());
    menu.createToolbar(markPersonAction, markAllAction);
    heartbeat();
    Hub.heart.addListener(this, Hub.localCfg.get(LabSettings.LABNEW_HEARTRATE, Heartbeat.FREQUENCY_HIGH));

    tv.setInput(this);
}

From source file:ch.elexis.views.RezepteView.java

License:Open Source License

private void makeActions() {
    newRpAction = new Action(Messages.getString("RezepteView.newPrescriptionAction")) { //$NON-NLS-1$
        {/* w  ww. j a  va  2s .c o m*/
            setImageDescriptor(Images.IMG_NEW.getImageDescriptor());
            setToolTipText(Messages.getString("RezepteView.newPrescriptonTooltip")); //$NON-NLS-1$
        }

        @Override
        public void run() {
            Patient act = (Patient) ElexisEventDispatcher.getSelected(Patient.class);
            if (act == null) {
                MessageBox mb = new MessageBox(getViewSite().getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mb.setText(Messages.getString("RezepteView.newPrescriptionError")); //$NON-NLS-1$
                mb.setMessage(Messages.getString("RezepteView.noPatientSelected")); //$NON-NLS-1$
                mb.open();
                return;
            }
            Fall fall = (Fall) ElexisEventDispatcher.getSelected(Fall.class);
            if (fall == null) {
                Konsultation k = act.getLetzteKons(false);
                if (k == null) {
                    SWTHelper.alert(Messages.getString("RezepteView.noCaseSelected"), //$NON-NLS-1$
                            Messages.getString("RezepteView.pleaseCreateOrChooseCase")); //$NON-NLS-1$
                    return;
                } else {
                    fall = k.getFall();
                }
            }
            new Rezept(act);
            tv.refresh();
        }
    };
    deleteRpAction = new Action(Messages.getString("RezepteView.deletePrescriptionActiom")) { //$NON-NLS-1$
        @Override
        public void run() {
            Rezept rp = (Rezept) ElexisEventDispatcher.getSelected(Rezept.class);
            if (MessageDialog.openConfirm(getViewSite().getShell(),
                    Messages.getString("RezepteView.deletePrescriptionActiom"), //$NON-NLS-1$
                    MessageFormat.format(Messages.getString("RezepteView.deletePrescriptionConfirm"), rp //$NON-NLS-1$
                            .getDate()))) {
                rp.delete();
                tv.refresh();
            }
        }
    };
    removeLineAction = new Action(Messages.getString("RezepteView.deleteLineAction")) { //$NON-NLS-1$
        @Override
        public void run() {
            Rezept rp = (Rezept) ElexisEventDispatcher.getSelected(Rezept.class);
            IStructuredSelection sel = (IStructuredSelection) lvRpLines.getSelection();
            Prescription p = (Prescription) sel.getFirstElement();
            if ((rp != null) && (p != null)) {
                rp.removePrescription(p);
                lvRpLines.refresh();
            }
            /*
             * RpZeile z=(RpZeile)sel.getFirstElement(); if((rp!=null) && (z!=null)){
             * rp.removeLine(z); lvRpLines.refresh(); }
             */
        }
    };
    addLineAction = new Action(Messages.getString("RezepteView.newLineAction")) { //$NON-NLS-1$
        @Override
        public void run() {
            try {
                LeistungenView lv1 = (LeistungenView) getViewSite().getPage().showView(LeistungenView.ID);
                CodeSelectorHandler.getInstance().setCodeSelectorTarget(dropTarget);
                CTabItem[] tabItems = lv1.ctab.getItems();
                for (CTabItem tab : tabItems) {
                    ICodeElement ics = (ICodeElement) tab.getData();
                    if (ics instanceof Artikel) {
                        lv1.ctab.setSelection(tab);
                        break;
                    }
                }
            } catch (PartInitException ex) {
                ExHandler.handle(ex);
            }
        }
    };
    printAction = new Action(Messages.getString("RezepteView.printAction")) { //$NON-NLS-1$
        @Override
        public void run() {
            try {
                RezeptBlatt rp = (RezeptBlatt) getViewSite().getPage().showView(RezeptBlatt.ID);
                Rezept actR = (Rezept) ElexisEventDispatcher.getSelected(Rezept.class);
                Brief rpBrief = actR.getBrief();
                if (rpBrief == null)
                    // not yet created - just create a new Rezept
                    rp.createRezept(actR);
                else {
                    // Brief for Rezept already exists:
                    // ask if it should be recreated or just shown
                    String[] dialogButtonLabels = { Messages.getString("RezepteView.RecreatePrescription"), //$NON-NLS-1$
                            Messages.getString("RezepteView.ShowPrescription"), //$NON-NLS-1$
                            Messages.getString("RezepteView.PrescriptionCancel") //$NON-NLS-1$
                    };
                    MessageDialog msg = new MessageDialog(null,
                            Messages.getString("RezepteView.CreatePrescription"), //$NON-NLS-1$
                            null, Messages.getString("RezepteView.ReallyWantToRecreatePrescription"), //$NON-NLS-1$
                            MessageDialog.WARNING, dialogButtonLabels, 2);
                    int result = msg.open();
                    switch (result) {
                    case 0: // recreate rezept
                        rp.createRezept(actR);
                        break;
                    case 1: // open rezept
                        rp.loadRezeptFromDatabase(actR, rpBrief);
                        break;
                    case 2: // cancel or closebox - do nothing
                        break;
                    }
                }
            } catch (Exception ex) {
                ExHandler.handle(ex);
            }
        }
    };
    changeMedicationAction = new RestrictedAction(AccessControlDefaults.MEDICATION_MODIFY,
            Messages.getString("RezepteView.ChangeLink")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_EDIT.getImageDescriptor());
            setToolTipText(Messages.getString("RezepteView.ChangeTooltip")); //$NON-NLS-1$
        }

        public void doRun() {
            Rezept rp = (Rezept) ElexisEventDispatcher.getSelected(Rezept.class);
            IStructuredSelection sel = (IStructuredSelection) lvRpLines.getSelection();
            Prescription pr = (Prescription) sel.getFirstElement();
            if (pr != null) {
                new MediDetailDialog(getViewSite().getShell(), pr).open();
                lvRpLines.refresh();
            }
        }
    };
    addLineAction.setImageDescriptor(Images.IMG_ADDITEM.getImageDescriptor());
    printAction.setImageDescriptor(Images.IMG_PRINTER.getImageDescriptor());
    deleteRpAction.setImageDescriptor(Images.IMG_DELETE.getImageDescriptor());
}

From source file:ch.elexis.views.ScriptView.java

License:Open Source License

private void makeActions() {
    exportScriptAction = new Action("export script") {
        {//from   ww w.  j  a v a2  s.  com
            setImageDescriptor(Images.IMG_EXPORT.getImageDescriptor());
            setToolTipText("export script into a text file");
        }

        @Override
        public void run() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (sel != null && sel.size() != 0) {
                FileDialog fd = new FileDialog(getViewSite().getShell(), SWT.SAVE);
                Script script = (Script) sel.getFirstElement();
                fd.setFileName(script.getLabel());
                String filename = fd.open();
                if (filename != null) {
                    try {
                        File file = new File(filename);
                        FileWriter fw = new FileWriter(file);

                        fw.write(script.getString());
                        fw.close();
                    } catch (IOException ex) {
                        SWTHelper.showError("IO Error",
                                "Could not write file " + filename + " : " + ex.getMessage());
                    }
                }
            }
        }
    };

    importScriptAction = new RestrictedAction(AccessControlDefaults.SCRIPT_EDIT, "Import Script") {
        {
            setImageDescriptor(Images.IMG_IMPORT.getImageDescriptor());
            setToolTipText("Import script from a text file");
        }

        @Override
        public void doRun() {
            FileDialog fd = new FileDialog(getViewSite().getShell(), SWT.OPEN);
            String filename = fd.open();
            if (fd != null) {
                try {
                    /* Script script= */Script.importFromFile(filename);
                    tv.refresh();
                } catch (ElexisException e) {
                    SWTHelper.showError("IO Error", e.getMessage());

                }
            }

        }

    };
    newScriptAction = new RestrictedAction(AccessControlDefaults.SCRIPT_EDIT,
            Messages.getString("ScriptView.newScriptAction")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_NEW.getImageDescriptor());
            setToolTipText(Messages.getString("ScriptView.newScriptTooltip")); //$NON-NLS-1$
        }

        @Override
        public void doRun() {
            InputDialog inp = new InputDialog(getSite().getShell(),
                    Messages.getString("ScriptView.enterNameCaption"), //$NON-NLS-1$
                    Messages.getString("ScriptView.enterNameBody"), null, //$NON-NLS-1$
                    null);
            if (inp.open() == Dialog.OK) {
                try {
                    Script.create(inp.getValue(), "");
                } catch (ElexisException e) {
                    ExHandler.handle(e);
                    SWTHelper.showError("Fehler bei Scripterstellung", e.getMessage());
                }
                tv.refresh();
            }
        }

    };
    editScriptAction = new RestrictedAction(AccessControlDefaults.SCRIPT_EDIT,
            Messages.getString("ScriptView.editScriptAction")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_EDIT.getImageDescriptor());
            setToolTipText(Messages.getString("ScriptView.editScriptTooltip")); //$NON-NLS-1$
        }

        @Override
        public void doRun() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (sel != null && sel.size() != 0) {
                Script script = (Script) sel.getFirstElement();
                ScriptEditor sce = new ScriptEditor(getSite().getShell(), script.getString(),
                        script.getLabel());
                if (sce.open() == Dialog.OK) {
                    script.putString(sce.getScript());
                }
            }

        }
    };
    removeScriptAction = new RestrictedAction(AccessControlDefaults.SCRIPT_EDIT,
            Messages.getString("ScriptView.deleteScriptAction")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_DELETE.getImageDescriptor());
            setToolTipText(Messages.getString("ScriptView.deleteScriptTooltip")); //$NON-NLS-1$
        }

        @Override
        public void doRun() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (sel != null && sel.size() != 0) {
                Script script = (Script) sel.getFirstElement();
                script.delete();
                tv.refresh();
            }
        }
    };
    execScriptAction = new RestrictedAction(AccessControlDefaults.SCRIPT_EXECUTE,
            Messages.getString("ScriptView.executeScriptAction")) { //$NON-NLS-1$
        {
            setImageDescriptor(Images.IMG_GOFURTHER.getImageDescriptor());
            setToolTipText(Messages.getString("ScriptView.executeScriptTooltip")); //$NON-NLS-1$
        }

        @Override
        public void doRun() {
            IStructuredSelection sel = (IStructuredSelection) tv.getSelection();
            if (sel != null && sel.size() != 0) {
                Script script = (Script) sel.getFirstElement();
                try {
                    String contents = script.getString();
                    ArrayList<String> vars = new ArrayList<String>();
                    Pattern var = Pattern.compile("\\$[0-9a-z]+", Pattern.CASE_INSENSITIVE);
                    Matcher m = var.matcher(contents);
                    while (m.find()) {
                        String varname = m.group();
                        if (!vars.contains(varname)) {
                            vars.add(varname);
                        }
                    }
                    String varString = null;
                    if (vars.size() > 0) {
                        SetVarsDlg dlg = new SetVarsDlg(getViewSite().getShell(), vars);
                        if (dlg.open() == Dialog.OK) {
                            varString = dlg.getResult();
                        }
                    }
                    Object ret = script.execute(varString);
                    SWTHelper.showInfo(Messages.getString("ScriptView.ScriptOutput"), ret.toString()); //$NON-NLS-1$
                } catch (Exception ex) {
                    ExHandler.handle(ex);
                    SWTHelper.showError("Fehler beim Ausfhren des Scripts", ex.getMessage());
                }
            }
        }
    };
}

From source file:ch.gpb.elexis.cst.view.CstProfileEditor.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize
 * it./*from  w ww.jav  a2 s. com*/
 */
@SuppressWarnings("unchecked")
public void createPartControl(Composite parent) {

    patient = ElexisEventDispatcher.getSelectedPatient();

    Canvas baseCanvas = new Canvas(parent, SWT.FILL);
    baseCanvas.setBackground(new Color(Display.getDefault(), 239, 239, 239));

    FillLayout glBase = new FillLayout();
    glBase.type = SWT.VERTICAL;

    GridData gdBase = new GridData();
    gdBase.horizontalAlignment = SWT.FILL;
    gdBase.grabExcessHorizontalSpace = true;
    baseCanvas.setLayout(glBase);

    Canvas profileParameterCanvas = new Canvas(baseCanvas, SWT.FILL);
    GridLayout profileGridLayout = new GridLayout(1, true);
    profileParameterCanvas.setBackground(new Color(Display.getDefault(), 239, 239, 239));
    profileParameterCanvas.setLayout(profileGridLayout);

    GridData gd = new GridData();
    gd.grabExcessVerticalSpace = false;
    gd.grabExcessHorizontalSpace = false;
    profileParameterCanvas.setLayoutData(gd);

    profileParameterCanvas.setSize(400, 400);

    scrolledForm = UiDesk.getToolkit().createScrolledForm(profileParameterCanvas);
    scrolledForm.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));
    Composite body = scrolledForm.getBody();
    body.setLayout(new FillLayout());

    ctabs = new CTabFolder(body, SWT.NONE);
    ctabs.setLayout(new FillLayout());

    Canvas buttonCanvas = new Canvas(profileParameterCanvas, SWT.NONE);
    GridLayout glButtonCanvas = new GridLayout();
    GridData gdButtonCanvas = new GridData();
    gdButtonCanvas.horizontalAlignment = SWT.CENTER;
    gdButtonCanvas.verticalAlignment = SWT.BEGINNING;
    glButtonCanvas.numColumns = 3;
    buttonCanvas.setSize(SWT.DEFAULT, 40);

    buttonCanvas.setLayoutData(gdButtonCanvas);
    buttonCanvas.setLayout(glButtonCanvas);
    Button btnSaveCstProfile = new Button(buttonCanvas, SWT.BORDER);

    btnSaveCstProfile.setText(Messages.CstProfileEditor_SaveProfile);
    btnSaveCstProfile.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            switch (e.type) {
            case SWT.Selection:
                saveCstProfile();
                break;
            }
        }
    });

    Button btnShowResult = new Button(buttonCanvas, SWT.BORDER);
    btnShowResult.setText(Messages.CstProfileEditor_AuswertungAnzeigen);
    btnShowResult.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            switch (e.type) {
            case SWT.Selection:

                showResultPage();

                break;
            }
        }
    });

    CTabItem ciTmp = new CTabItem(ctabs, SWT.NONE);
    ciTmp.setText(Messages.CstProfileEditor_Anzeige);
    aoComposite = new AnzeigeOptionsComposite(ctabs);
    ciTmp.setControl(aoComposite);

    // Tab Auswahl Befunde
    BefundSelectionComposite befundSelectionComposite = new BefundSelectionComposite(ctabs);
    CTabItem ciBsc = new CTabItem(ctabs, SWT.NONE);
    ciBsc.setText(Messages.CstProfileEditor_Auswahlbefunde);

    ciBsc.setControl(befundSelectionComposite);

    // Tab Therapievorschlag
    CTabItem ci4 = new CTabItem(ctabs, SWT.NONE);
    ci4.setText(Messages.CstProfileEditor_Therapievorschlag);
    therapieComposite = new TherapieVorschlagComposite(ctabs);
    ci4.setControl(therapieComposite);

    // Tabitem Cst Documents
    CTabItem ci8 = new CTabItem(ctabs, SWT.NONE);
    ci8.setText(Messages.Cst_Text_cst_documents);
    docComposite = new CstDocumentsComposite(ctabs, getViewSite());
    ci8.setControl(docComposite);

    // Tabitem Pro Immun
    CTabItem ci9 = new CTabItem(ctabs, SWT.NONE);
    ci9.setText(Messages.CstProfileEditor_Proimmun);
    proImmunComposite = new ProImmunComposite(ctabs);
    ci9.setControl(proImmunComposite);

    // Tabitem Gastro
    CTabItem ci10 = new CTabItem(ctabs, SWT.NONE);
    ci10.setText(Messages.CstProfileEditor_GastroColo);
    gastroComposite = new GastroComposite(ctabs);
    ci10.setControl(gastroComposite);

    // Tabitem TEmplate
    CTabItem ci12 = new CTabItem(ctabs, SWT.NONE);
    ci12.setText(Messages.TemplateComposite_template_title);
    TemplateComposite templateComposite = new TemplateComposite(ctabs);
    ci12.setControl(templateComposite);

    // Tabitem REminders
    /*
    CTabItem ci13 = new CTabItem(ctabs, SWT.NONE);
    ci13.setText("Reminders");
    stateComposite = new RemindersComposite(ctabs);
    ci13.setControl(stateComposite);
    */

    // Tabitem Hilfe
    CTabItem ci11 = new CTabItem(ctabs, SWT.NONE);
    ci11.setText(Messages.HilfeComposite_hilfe_text);
    HilfeComposite hilfeComposite = new HilfeComposite(ctabs);
    ci11.setControl(hilfeComposite);

    // **** Tables with Profiles and Groups *********
    //
    SashForm sashform = new SashForm(baseCanvas, SWT.FILL);
    GridData gdSash = new GridData();
    gdSash.heightHint = 400;
    gdSash.horizontalAlignment = SWT.FILL;
    sashform.setLayoutData(gdSash);

    sashform.setLayout(new GridLayout());
    sashform.setSashWidth(2);

    // Composite Left Side
    Composite child1 = new Composite(sashform, SWT.FILL);
    GridLayout gridLayoutLeft = new GridLayout();
    gridLayoutLeft.numColumns = 1;
    child1.setLayout(gridLayoutLeft);

    // Composite Right Side
    Composite child2 = new Composite(sashform, SWT.FILL);
    GridLayout gridLayoutRight = new GridLayout();
    gridLayoutRight.numColumns = 1;
    child2.setLayout(gridLayoutRight);

    sashform.setWeights(new int[] { 200, 300 });

    // Label and Table Left Side
    labelLeft = new Label(child1, SWT.BORDER | SWT.CENTER);
    if (patient == null) {
        labelLeft.setText(Messages.CstCategory_nopatientselected);
    } else {
        labelLeft
                .setText(Messages.Cst_Text_Profile_fuer + " " + patient.getName() + " " + patient.getVorname());
    }

    labelLeft.setSize(100, 20);
    labelLeft.setFont(createBoldFont(labelLeft.getFont()));
    labelLeft.setForeground(UiDesk.getColor(UiDesk.COL_BLUE));
    labelLeft.setBackground(new Color(Display.getDefault(), 251, 247, 247));

    GridData gridDataLabelLeft = new GridData();
    gridDataLabelLeft.horizontalAlignment = GridData.FILL;
    gridDataLabelLeft.grabExcessHorizontalSpace = true;
    labelLeft.setLayoutData(gridDataLabelLeft);

    tableProfile = new Table(child1, SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    GridData gridDataTableLeft = new GridData();
    gridDataTableLeft.horizontalAlignment = GridData.FILL;
    gridDataTableLeft.verticalAlignment = GridData.FILL;
    gridDataTableLeft.grabExcessHorizontalSpace = true;
    gridDataTableLeft.grabExcessVerticalSpace = true;
    gridDataTableLeft.minimumHeight = 200;
    gridDataTableLeft.heightHint = 200;
    tableProfile.setLayoutData(gridDataTableLeft);

    // Label and Table Right Side
    Label labelRight = new Label(child2, SWT.BORDER | SWT.CENTER);
    labelRight.setText("Profile Items (CST Groups)");
    labelRight.setSize(100, 20);
    labelRight.setFont(createBoldFont(labelRight.getFont()));
    labelRight.setBackground(new Color(Display.getDefault(), 251, 247, 247));

    GridData gridDataLabelRight = new GridData();
    gridDataLabelRight.horizontalAlignment = GridData.FILL;
    gridDataLabelRight.grabExcessHorizontalSpace = true;
    labelRight.setLayoutData(gridDataLabelRight);

    tableCstGroup = new Table(child2,
            SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    GridData gridDataTableRight = new GridData();
    gridDataTableRight.horizontalAlignment = GridData.FILL;
    gridDataTableRight.verticalAlignment = GridData.FILL;
    gridDataTableRight.grabExcessHorizontalSpace = true;
    gridDataTableRight.grabExcessVerticalSpace = true;
    gridDataTableRight.minimumHeight = 200;
    gridDataTableRight.heightHint = 200;
    tableCstGroup.setLayoutData(gridDataTableRight);

    Composite movebuttonDummyCompo = new Composite(child1, SWT.NONE);
    GridData gdDummyMovebutton = new GridData();
    movebuttonDummyCompo.setLayoutData(gdDummyMovebutton);
    gdDummyMovebutton.heightHint = 30;

    Composite movebuttonCompo = new Composite(child2, SWT.NONE);
    GridLayout movebuttonGridLayout = new GridLayout(2, true);

    movebuttonCompo.setLayout(movebuttonGridLayout);
    movebuttonCompo.setSize(400, 30);
    GridData gdButtonCompo = new GridData(GridData.HORIZONTAL_ALIGN_END);
    gdButtonCompo.minimumHeight = 30;
    gdButtonCompo.heightHint = 30;
    gdButtonCompo.horizontalAlignment = SWT.CENTER;
    gdButtonCompo.verticalAlignment = SWT.BEGINNING;
    movebuttonCompo.setLayoutData(gdButtonCompo);

    Image imgArrowUp = UiDesk.getImage(Activator.IMG_ARROW_UP_NAME);
    Image imgArrowDown = UiDesk.getImage(Activator.IMG_ARROW_DOWN_NAME);

    Button btnArrowUp = new Button(movebuttonCompo, SWT.BORDER);
    Button btnArrowDown = new Button(movebuttonCompo, SWT.BORDER);

    btnArrowDown.setText(Messages.Button_MoveDown);
    btnArrowUp.setText(Messages.Button_MoveUp);

    btnArrowUp.setImage(imgArrowUp);
    btnArrowDown.setImage(imgArrowDown);

    GridData gdArrowUp = new GridData(GridData.HORIZONTAL_ALIGN_END);
    GridData gdArrowDown = new GridData(GridData.HORIZONTAL_ALIGN_END);

    btnArrowUp.setLayoutData(gdArrowUp);
    btnArrowDown.setLayoutData(gdArrowDown);

    btnArrowUp.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            moveItemUp();
            ;
        }
    });

    btnArrowDown.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            moveItemDown();
            ;
        }
    });

    cstProfiles = new ArrayList<CstProfile>();

    String[] colLabels = getCategoryColumnLabels();
    int columnWidth[] = getProfileColumnWidth();
    ProfileSortListener categorySortListener = new ProfileSortListener();
    TableColumn[] cols = new TableColumn[colLabels.length];
    for (int i = 0; i < colLabels.length; i++) {
        cols[i] = new TableColumn(tableProfile, SWT.NONE);
        cols[i].setWidth(columnWidth[i]);
        cols[i].setText(colLabels[i]);
        cols[i].setData(new Integer(i));
        cols[i].addSelectionListener(categorySortListener);
    }
    tableProfile.setHeaderVisible(true);
    tableProfile.setLinesVisible(true);

    String[] colLabels2 = getCstGroupColumnLabels();
    int columnWidth2[] = getCstGroupColumnWidth();

    TableColumn[] cols2 = new TableColumn[colLabels.length];
    for (int i = 0; i < colLabels2.length; i++) {
        cols2[i] = new TableColumn(tableCstGroup, SWT.NONE);
        cols2[i].setWidth(columnWidth2[i]);
        cols2[i].setText(colLabels2[i]);
        cols2[i].setData(new Integer(i));
    }
    tableCstGroup.setHeaderVisible(true);
    tableCstGroup.setLinesVisible(true);

    tableViewerProfiles = new CheckboxTableViewer(tableProfile);
    tableViewerProfiles.setContentProvider(new ProfileContentProvider());
    tableViewerProfiles.setLabelProvider(new ProfileLabelProvider());
    tableViewerProfiles.setSorter(new ProfileSorter());

    tableViewerProfiles.setInput(getViewSite());
    if (tableProfile.getItems().length > 0) {
        tableProfile.select(0);
    }

    tableViewerProfiles.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewerProfiles.getSelection();
            // on selecting a new Category, fetch its LabItems
            CstProfile selProfile = (CstProfile) selection.getFirstElement();
            if (selProfile != null) {
                itemRanking = selProfile.getMap(CstGroup.ITEMRANKING);
                cstGroups = selProfile.getCstGroups();

                // if null, initialize the ranking with the current sequence
                if (itemRanking == null || itemRanking.size() == 0) {
                    Hashtable<Object, Object> ranking = new Hashtable<Object, Object>();
                    int i = 1;
                    for (CstGroup item : cstGroups) {
                        ranking.put(item.getId(), i++);

                    }
                    itemRanking = (Map<Object, Object>) ranking.clone();
                    selProfile.setMap(CstGroup.ITEMRANKING, ranking);
                }

                loadCstProfile(selProfile);
                tableViewerCstGroups.refresh();
            }
        }
    });

    tableViewerCstGroups = new CheckboxTableViewer(tableCstGroup);
    tableViewerCstGroups.setContentProvider(new CstGroupContentProvider());
    tableViewerCstGroups.setLabelProvider(new CstGroupLabelProvider());
    tableViewerCstGroups.setSorter(new CstGroupSorter());

    tableViewerCstGroups.setInput(getViewSite());

    // Create the help context id for the viewer's control
    ctabs.setSelection(ctabs.getItem(0));

    PlatformUI.getWorkbench().getHelpSystem().setHelp(tableViewerProfiles.getControl(),
            "ch.gpb.elexis.cst.viewer");
    makeActions();
    hookContextMenuCategory();
    hookContextMenuLabItem();
    hookDoubleClickAction();
    contributeToActionBars();
    GlobalEventDispatcher.addActivationListener(this, this);

}

From source file:ch.gpb.elexis.cst.view.CstProfileEditor.java

License:Open Source License

private void moveItemUp() {

    IStructuredSelection selection2 = (IStructuredSelection) tableViewerProfiles.getSelection();
    CstProfile selProfile = (CstProfile) selection2.getFirstElement();

    try {/*from   w w  w.  j  a  v a 2 s.com*/
        IStructuredSelection selection = (IStructuredSelection) tableViewerCstGroups.getSelection();
        CstGroup selItem = (CstGroup) selection.getFirstElement();
        if (selItem == null) {
            return;
        }
        int selIndex = tableViewerCstGroups.getTable().getSelectionIndex();

        if (selIndex < 1) {
            return;
        }

        TableItem tableItem = tableViewerCstGroups.getTable().getItem(selIndex - 1);
        CstGroup aboveItem = (CstGroup) tableItem.getData();

        int rank1 = (int) itemRanking.get(selItem.getId());
        int rank2 = (int) itemRanking.get(aboveItem.getId());
        itemRanking.put(selItem.getId(), rank1 - 1);
        itemRanking.put(aboveItem.getId(), rank2 + 1);

        selProfile.setMap(CstProfile.ITEMRANKING, itemRanking);

        tableViewerCstGroups.refresh();
    } catch (Exception e) {
        log.error(e.toString());
        showMessage("Fehler: die Reihenfolge der CST Gruppen muss neu initialisiert werden.");
        reinitRanking(selProfile);
    }
}

From source file:ch.gpb.elexis.cst.view.CstProfileEditor.java

License:Open Source License

private void moveItemDown() {

    IStructuredSelection selection2 = (IStructuredSelection) tableViewerProfiles.getSelection();
    CstProfile selProfile = (CstProfile) selection2.getFirstElement();

    try {/*  ww w.  j  a v a2 s .c  o m*/
        IStructuredSelection selection = (IStructuredSelection) tableViewerCstGroups.getSelection();
        CstGroup selItem = (CstGroup) selection.getFirstElement();
        if (selItem == null) {
            return;
        }
        int selIndex = tableViewerCstGroups.getTable().getSelectionIndex();
        if (selIndex + 1 >= tableViewerCstGroups.getTable().getItemCount()) {
            return;
        }

        TableItem tableItem = tableViewerCstGroups.getTable().getItem(selIndex + 1);
        CstGroup belowItem = (CstGroup) tableItem.getData();

        int rank1 = (int) itemRanking.get(selItem.getId());
        int rank2 = (int) itemRanking.get(belowItem.getId());
        itemRanking.put(selItem.getId(), rank1 + 1);
        itemRanking.put(belowItem.getId(), rank2 - 1);

        selProfile.setMap(CstProfile.ITEMRANKING, itemRanking);

        tableViewerCstGroups.refresh();
    } catch (Exception e) {
        log.error(e.toString());
        showMessage("Fehler: die Reihenfolge der CST Gruppen muss neu initialisiert werden.");
        reinitRanking(selProfile);
    }

}

From source file:ch.gpb.elexis.cst.view.CstThemenblockEditor.java

License:Open Source License

/**
 * This is a callback that will allow us to create the viewer and initialize
 * it./*from www . j  a  v  a2s. c o  m*/
 */
@SuppressWarnings("unchecked")
public void createPartControl(Composite parent) {

    Canvas baseCanvas = new Canvas(parent, SWT.VERTICAL);
    baseCanvas.setBackground(new Color(Display.getDefault(), 239, 239, 239));

    FillLayout baseGridLayout = new FillLayout();
    //GridLayout baseGridLayout = new GridLayout();
    baseGridLayout.type = SWT.VERTICAL;

    baseCanvas.setLayout(baseGridLayout);

    SashForm form = new SashForm(baseCanvas, SWT.HORIZONTAL);
    //form.setLayout(new FillLayout());
    //form.setSashWidth(5);
    form.setLayout(new GridLayout());
    GridData gdForm = new GridData();
    gdForm.heightHint = 400;
    form.setLayoutData(gdForm);

    // Composite Left Side
    Composite child1 = new Composite(form, SWT.NONE);
    GridLayout gridLayoutLeft = new GridLayout();
    gridLayoutLeft.numColumns = 1;
    child1.setLayout(gridLayoutLeft);

    // Composite Right Side
    Composite child2 = new Composite(form, SWT.NONE);
    GridLayout gridLayoutRight = new GridLayout();
    gridLayoutRight.numColumns = 1;
    child2.setLayout(gridLayoutRight);

    form.setWeights(new int[] { 20, 40 });

    // Label and Table Left Side
    labelLeft = new Label(child1, SWT.BORDER | SWT.CENTER);
    labelLeft.setText("CST Group");

    labelLeft.setSize(100, 20);
    labelLeft.setFont(createBoldFont(labelLeft.getFont()));
    labelLeft.setForeground(UiDesk.getColor(UiDesk.COL_BLUE));
    labelLeft.setBackground(new Color(Display.getDefault(), 251, 247, 247));

    GridData gridDataLabelLeft = new GridData();
    gridDataLabelLeft.horizontalAlignment = GridData.FILL;
    gridDataLabelLeft.grabExcessHorizontalSpace = true;
    labelLeft.setLayoutData(gridDataLabelLeft);

    tableCstGroup = new Table(child1,
            SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    GridData gridDataTableLeft = new GridData();
    gridDataTableLeft.horizontalAlignment = GridData.FILL;
    gridDataTableLeft.verticalAlignment = GridData.FILL;
    gridDataTableLeft.grabExcessHorizontalSpace = true;
    gridDataTableLeft.grabExcessVerticalSpace = true;
    tableCstGroup.setLayoutData(gridDataTableLeft);

    // Label and Table Right Side
    Label labelRight = new Label(child2, SWT.BORDER | SWT.CENTER);
    labelRight.setText("Labor Items");
    labelRight.setSize(100, 20);
    labelRight.setFont(createBoldFont(labelRight.getFont()));
    labelRight.setBackground(new Color(Display.getDefault(), 251, 247, 247));

    GridData gridDataLabelRight = new GridData();
    gridDataLabelRight.horizontalAlignment = GridData.FILL;
    gridDataLabelRight.grabExcessHorizontalSpace = true;
    labelRight.setLayoutData(gridDataLabelRight);

    tableLabItem = new Table(child2, SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    GridData gridDataTableRight = new GridData();
    gridDataTableRight.horizontalAlignment = GridData.FILL;
    gridDataTableRight.verticalAlignment = GridData.FILL;
    gridDataTableRight.grabExcessHorizontalSpace = true;
    gridDataTableRight.grabExcessVerticalSpace = true;
    tableLabItem.setLayoutData(gridDataTableRight);

    cstGroups = new ArrayList<CstGroup>();

    String[] colLabels = getCategoryColumnLabels();
    int columnWidth[] = getColumnWidth();
    CategorySortListener categorySortListener = new CategorySortListener();
    TableColumn[] cols = new TableColumn[colLabels.length];
    for (int i = 0; i < colLabels.length; i++) {
        cols[i] = new TableColumn(tableCstGroup, SWT.NONE);
        cols[i].setWidth(columnWidth[i]);
        cols[i].setText(colLabels[i]);
        cols[i].setData(new Integer(i));
        cols[i].addSelectionListener(categorySortListener);
    }
    tableCstGroup.setHeaderVisible(true);
    tableCstGroup.setLinesVisible(true);

    String[] colLabels2 = getLabItemsColumnLabels();
    int columnWidth2[] = getColumnWidthLabItem();

    LabItemSortListener labItemSortListener = new LabItemSortListener();
    TableColumn[] cols2 = new TableColumn[colLabels2.length];
    for (int i = 0; i < colLabels2.length; i++) {
        cols2[i] = new TableColumn(tableLabItem, SWT.NONE);
        cols2[i].setWidth(columnWidth2[i]);
        cols2[i].setText(colLabels2[i]);
        cols2[i].setData(new Integer(i));
        cols2[i].addSelectionListener(labItemSortListener);
    }
    tableLabItem.setHeaderVisible(true);
    tableLabItem.setLinesVisible(true);

    createBoldFont(tableCstGroup.getFont());
    myColorRed = createRedColor(tableCstGroup.getFont());

    tableViewerCstGroup = new CheckboxTableViewer(tableCstGroup);
    tableViewerCstGroup.setContentProvider(new CategoryContentProvider());
    tableViewerCstGroup.setLabelProvider(new CategoryLabelProvider());
    tableViewerCstGroup.setSorter(new CategorySorter());

    tableViewerCstGroup.setInput(getViewSite());
    if (tableCstGroup.getItems().length > 0) {
        tableCstGroup.select(0);
    }

    tableViewerLabItem = new CheckboxTableViewer(tableLabItem);
    tableViewerLabItem.setContentProvider(new LabItemContentProvider());
    tableViewerLabItem.setLabelProvider(new LabItemLabelProvider());
    tableViewerLabItem.setSorter(new LabItemSorter());
    tableViewerLabItem.setInput(getViewSite());

    tableViewerCstGroup.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewerCstGroup.getSelection();

            // on selecting a new Category, fetch its LabItems
            CstGroup selGroup = (CstGroup) selection.getFirstElement();
            if (selGroup != null) {
                itemRanking = selGroup.getMap(CstGroup.ITEMRANKING);
                labItems = selGroup.getLabitems();

                // if null, initialize the ranking with the current sequence
                if (itemRanking == null || itemRanking.size() == 0) {
                    Hashtable<Object, Object> ranking = new Hashtable<Object, Object>();
                    int i = 1;
                    for (LabItemWrapper item : labItems) {
                        ranking.put(item.getLabItem().getId(), i++);
                    }
                    itemRanking = (Map<Object, Object>) ranking.clone();
                    selGroup.setMap(CstGroup.ITEMRANKING, ranking);
                }

                tableViewerLabItem.refresh();
            }
        }
    });

    Composite abstractCanvas = new Composite(baseCanvas, SWT.HORIZONTAL);
    GridLayout abstractGridLayout = new GridLayout(1, true);
    abstractCanvas.setLayout(abstractGridLayout);
    GridData gdAbstract = new GridData();
    gdAbstract.horizontalAlignment = SWT.FILL;
    abstractCanvas.setLayoutData(gdAbstract);

    Composite movebuttonCompo = new Composite(abstractCanvas, SWT.NONE);
    GridLayout movebuttonGridLayout = new GridLayout(3, true);
    movebuttonCompo.setLayout(movebuttonGridLayout);
    //movebuttonCanvas.setSize(400, 20);
    GridData gdButtons = new GridData();
    gdButtons.horizontalAlignment = SWT.CENTER;
    gdButtons.heightHint = 80;
    //gdButtons.widthHint = 300;
    gdButtons.verticalAlignment = GridData.FILL;
    movebuttonCompo.setLayoutData(gdButtons);
    gdButtons.minimumHeight = 80;

    Image imgArrowUp = UiDesk.getImage(Activator.IMG_ARROW_UP_NAME);
    Image imgArrowDown = UiDesk.getImage(Activator.IMG_ARROW_DOWN_NAME);

    Button btnArrowUp = new Button(movebuttonCompo, SWT.BORDER);
    Button btnArrowDown = new Button(movebuttonCompo, SWT.BORDER);

    btnArrowUp.setImage(imgArrowUp);
    btnArrowDown.setImage(imgArrowDown);

    GridData gdArrowUp = new GridData(GridData.END);
    GridData gdArrowDown = new GridData(GridData.END);

    btnArrowUp.setLayoutData(gdArrowUp);
    btnArrowDown.setLayoutData(gdArrowDown);

    btnArrowDown.setText(Messages.Button_MoveDown);
    btnArrowUp.setText(Messages.Button_MoveUp);

    btnArrowUp.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            moveItemUp();
            ;
        }
    });

    btnArrowDown.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            moveItemDown();
            ;
        }
    });

    txtAbstract = new Text(abstractCanvas, SWT.MULTI | SWT.BORDER | SWT.HORIZONTAL);
    GridData gridDataText = new GridData(GridData.FILL_BOTH);
    gridDataText.verticalAlignment = SWT.FILL;
    gridDataText.grabExcessVerticalSpace = true;
    gridDataText.grabExcessHorizontalSpace = true;
    gridDataText.heightHint = 200;
    //gridDataText.widthHint = 600;

    txtAbstract.setLayoutData(gridDataText);

    GridData gdBtnSaveAbst = new GridData();
    gdBtnSaveAbst.verticalAlignment = SWT.BOTTOM;
    gdBtnSaveAbst.horizontalAlignment = SWT.LEFT;
    //gdBtnSaveAbst.grabExcessHorizontalSpace = true;
    //gdBtnSaveAbst.grabExcessVerticalSpace = true;
    Button btnSaveAbstract = new Button(abstractCanvas, SWT.BORDER);
    btnSaveAbstract.setLayoutData(gdBtnSaveAbst);

    btnSaveAbstract.setText("Save Abstract for Lab item");
    btnSaveAbstract.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            switch (e.type) {
            case SWT.Selection:
                saveAbstract();
                break;
            }
        }
    });

    final Label labelAbstract = new Label(abstractCanvas, SWT.NONE);
    final String sLabelAbstract = " Zeichen (max. ca. 500 Z.)";
    labelAbstract.setText("0 " + sLabelAbstract);
    GridData gdLabelAbstract = new GridData();
    gdLabelAbstract.verticalAlignment = SWT.BOTTOM;
    gdLabelAbstract.horizontalAlignment = SWT.LEFT;
    labelAbstract.setLayoutData(gdLabelAbstract);

    txtAbstract.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            labelAbstract.setText(String.valueOf(txtAbstract.getText().length()) + sLabelAbstract);

        }
    });

    tableViewerLabItem.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewerLabItem.getSelection();
            // on selecting a new Category, fetch its LabItems
            LabItemWrapper selItem = (LabItemWrapper) selection.getFirstElement();
            if (selItem != null) {
                //labItems = selItem.getLabitems();
                CstAbstract abst = CstAbstract.getByLaboritemId(selItem.getLabItem().getId());

                String text;
                if (abst == null) {
                    text = "default";
                } else {
                    text = abst.getDescription1();
                    log.debug("desc: " + abst.getDescription1());
                }
                txtAbstract.setText(text);
            }
        }
    });

    // Create the help context id for the viewer's control
    PlatformUI.getWorkbench().getHelpSystem().setHelp(tableViewerCstGroup.getControl(),
            "ch.gpb.elexis.cst.viewer");
    makeActions();
    hookContextMenuCategory();
    hookContextMenuLabItem();
    hookDoubleClickAction();
    contributeToActionBars();
    GlobalEventDispatcher.addActivationListener(this, this);

}

From source file:ch.gpb.elexis.cst.view.CstThemenblockEditor.java

License:Open Source License

private void moveItemUp() {
    IStructuredSelection selection2 = (IStructuredSelection) tableViewerCstGroup.getSelection();
    CstGroup selGroup = (CstGroup) selection2.getFirstElement();

    try {//  w w w.  ja va  2 s.com
        IStructuredSelection selection = (IStructuredSelection) tableViewerLabItem.getSelection();
        LabItemWrapper selItem = (LabItemWrapper) selection.getFirstElement();
        if (selItem == null) {
            return;
        }
        int selIndex = tableViewerLabItem.getTable().getSelectionIndex();

        if (selIndex < 1) {
            return;
        }

        TableItem tableItem = tableViewerLabItem.getTable().getItem(selIndex - 1);
        LabItemWrapper aboveItem = (LabItemWrapper) tableItem.getData();

        int rank1 = (int) itemRanking.get(selItem.getLabItem().getId());
        int rank2 = (int) itemRanking.get(aboveItem.getLabItem().getId());
        itemRanking.put(selItem.getLabItem().getId(), rank1 - 1);
        itemRanking.put(aboveItem.getLabItem().getId(), rank2 + 1);

        selGroup.setMap(CstGroup.ITEMRANKING, itemRanking);

        tableViewerLabItem.refresh();
    } catch (Exception e) {
        showMessage("Fehler: die Reihenfolge der Laboritems muss neu initialisiert werden.");
        reinitRanking(selGroup);
    }
}