Search in sources :

Example 56 with Event

use of org.olat.core.gui.control.Event in project openolat by klemens.

the class JMSTest method testSendReceive.

@Test
public void testSendReceive() {
    // enable test only if we have the cluster configuration enabled.
    // this test requires that an JMS Provider is running
    // (see file serviceconfig/org/olat/core/_spring/coreextconfig.xml)
    EventBus bus = CoordinatorManager.getInstance().getCoordinator().getEventBus();
    if (bus instanceof ClusterEventBus) {
        Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("jms");
        // send and wait some time until a message should arrive at the latest.
        final OLATResourceable ores = OresHelper.createOLATResourceableInstance("hellojms", new Long(123));
        final CountDownLatch doneSignal = new CountDownLatch(1);
        bus.registerFor(new GenericEventListener() {

            @Override
            public void event(Event event) {
                log.audit("Event received: " + event);
                doneSignal.countDown();
            }
        }, id, ores);
        MultiUserEvent mue = new MultiUserEvent("amuecommand");
        bus.fireEventToListenersOf(mue, ores);
        try {
            boolean interrupt = doneSignal.await(5, TimeUnit.SECONDS);
            assertTrue("Test takes too long (more than 5s)", interrupt);
        } catch (InterruptedException e) {
            fail("" + e.getMessage());
        }
    }
}
Also used : OLATResourceable(org.olat.core.id.OLATResourceable) MultiUserEvent(org.olat.core.util.event.MultiUserEvent) Event(org.olat.core.gui.control.Event) EventBus(org.olat.core.util.event.EventBus) GenericEventListener(org.olat.core.util.event.GenericEventListener) Identity(org.olat.core.id.Identity) CountDownLatch(java.util.concurrent.CountDownLatch) MultiUserEvent(org.olat.core.util.event.MultiUserEvent) Test(org.junit.Test)

Example 57 with Event

use of org.olat.core.gui.control.Event in project openolat by klemens.

the class EPViewModeController method formInnerEvent.

/**
 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formInnerEvent(org.olat.core.gui.UserRequest, org.olat.core.gui.components.form.flexible.FormItem, org.olat.core.gui.components.form.flexible.impl.FormEvent)
 */
@Override
protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
    if (source == tableLink || source == detailsLink) {
        FormLink link = (FormLink) source;
        if (!link.getCmd().equals(userPrefsMode)) {
            String newUserPrefsMode = link.getCmd();
            ePFMgr.setUsersPreferedArtefactViewMode(getIdentity(), newUserPrefsMode, context);
            userPrefsMode = newUserPrefsMode;
            fireEvent(ureq, new Event(VIEWMODE_CHANGED_EVENT_CMD));
        }
    }
}
Also used : Event(org.olat.core.gui.control.Event) FormEvent(org.olat.core.gui.components.form.flexible.impl.FormEvent) FormLink(org.olat.core.gui.components.form.flexible.elements.FormLink)

Example 58 with Event

use of org.olat.core.gui.control.Event in project openolat by klemens.

the class RepositorySearchController method event.

/**
 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
 */
@Override
public void event(UserRequest urequest, Controller source, Event event) {
    if (source == tableCtr) {
        // process table actions
        if (event instanceof TableEvent) {
            TableEvent te = (TableEvent) event;
            int rowId = te.getRowId();
            if (te.getActionId().equals(RepositoryTableModel.TABLE_ACTION_INFOS)) {
                RepositoryEntry entry = (RepositoryEntry) tableCtr.getTableDataModel().getObject(rowId);
                int row = tableCtr.getIndexOfSortedObject(entry);
                doOpenInfos(urequest, entry, row);
            } else if (te.getActionId().equals(RepositoryTableModel.TABLE_ACTION_SELECT_LINK)) {
                selectedEntry = (RepositoryEntry) tableCtr.getTableDataModel().getObject(rowId);
                fireEvent(urequest, new Event(RepositoryTableModel.TABLE_ACTION_SELECT_LINK));
                selectedEntries = null;
            }
        } else if (event instanceof TableMultiSelectEvent) {
            TableMultiSelectEvent mse = (TableMultiSelectEvent) event;
            if (!mse.getSelection().isEmpty()) {
                selectedEntry = null;
                BitSet objectMarkers = mse.getSelection();
                selectedEntries = new ArrayList<>(objectMarkers.size());
                for (int i = objectMarkers.nextSetBit(0); i >= 0; i = objectMarkers.nextSetBit(i + 1)) {
                    RepositoryEntry entry = (RepositoryEntry) tableCtr.getTableDataModel().getObject(i);
                    selectedEntries.add(entry);
                }
                fireEvent(urequest, new Event(RepositoryTableModel.TABLE_ACTION_SELECT_ENTRIES));
            }
        } else if (TableController.EVENT_FILTER_SELECTED.equals(event)) {
            TypeFilter typeFilter = (TypeFilter) tableCtr.getActiveFilter();
            if (searchType == SearchType.byOwner) {
                doSearchByOwnerLimitTypeInternal(typeFilter.getOwner(), new String[] { typeFilter.getType() }, false);
            } else if (searchType == SearchType.myAsStudent) {
                doSearchMyCoursesStudent(urequest, typeFilter.getType(), false);
            } else if (searchType == SearchType.myAsTeacher) {
                doSearchMyCoursesTeacher(urequest, typeFilter.getType(), false);
            } else if (searchType == SearchType.searchForm) {
                if (enableSearchforAllInSearchForm != null) {
                    doSearchAllReferencables(urequest, typeFilter.getType(), false);
                } else {
                    doSearch(urequest, typeFilter.getType(), false);
                }
            }
        } else if (TableController.EVENT_NOFILTER_SELECTED.equals(event)) {
            if (searchType == SearchType.byOwner) {
                doSearchByOwnerLimitTypeInternal(getIdentity(), new String[] {}, false);
            } else if (searchType == SearchType.myAsStudent) {
                doSearchMyCoursesStudent(urequest);
            } else if (searchType == SearchType.myAsTeacher) {
                doSearchMyCoursesTeacher(urequest);
            } else if (searchType == SearchType.searchForm) {
                if (enableSearchforAllInSearchForm != null) {
                    doSearchAllReferencables(urequest, null, false);
                } else {
                    doSearch(urequest, null, false);
                }
            }
        }
    } else if (event instanceof EntryChangedEvent) {
        // remove deleted entry
        EntryChangedEvent ecv = (EntryChangedEvent) event;
        if (ecv.getChange() == Change.deleted) {
            List<RepositoryEntry> newEntries = new ArrayList<RepositoryEntry>();
            for (int i = 0; i < repoTableModel.getRowCount(); i++) {
                RepositoryEntry foo = repoTableModel.getObject(i);
                if (!foo.getKey().equals(ecv.getRepositoryEntryKey())) {
                    newEntries.add(foo);
                }
            }
            repoTableModel.setObjects(newEntries);
            tableCtr.modelChanged();
        } else if (ecv.getChange() == Change.added) {
            doSearchByOwner(urequest.getIdentity());
        }
    } else if (source == searchForm) {
        // process search form events
        if (event == Event.DONE_EVENT) {
            if (searchForm.hasId()) {
                doSearchById(searchForm.getId(), searchForm.getRestrictedTypes());
            } else if (enableSearchforAllInSearchForm != null) {
                doSearchAllReferencables(urequest, null, true);
            } else {
                doSearch(urequest, null, true);
            }
        } else if (event == Event.CANCELLED_EVENT) {
            fireEvent(urequest, Event.CANCELLED_EVENT);
        }
    } else if (calloutCtrl == source) {
        removeAsListenerAndDispose(calloutCtrl);
        removeAsListenerAndDispose(infosCtrl);
        calloutCtrl = null;
        infosCtrl = null;
    }
}
Also used : TableEvent(org.olat.core.gui.components.table.TableEvent) TableMultiSelectEvent(org.olat.core.gui.components.table.TableMultiSelectEvent) BitSet(java.util.BitSet) ArrayList(java.util.ArrayList) TableMultiSelectEvent(org.olat.core.gui.components.table.TableMultiSelectEvent) Event(org.olat.core.gui.control.Event) TableEvent(org.olat.core.gui.components.table.TableEvent) ArrayList(java.util.ArrayList) List(java.util.List) RepositoryEntry(org.olat.repository.RepositoryEntry)

Example 59 with Event

use of org.olat.core.gui.control.Event in project openolat by klemens.

the class YearNavigationController method event.

/**
 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
 *      org.olat.core.gui.components.Component,
 *      org.olat.core.gui.control.Event)
 */
@Override
protected void event(UserRequest ureq, Component source, Event event) {
    if (source == next) {
        model.next();
        createLinks();
        Year year = (Year) yearLink.getUserObject();
        Event navEvent = new NavigationEvent(year.getItems());
        fireEvent(ureq, navEvent);
        yearLink.setCustomEnabledLinkCSS("o_year o_selected");
    } else if (source == previous) {
        model.previous();
        createLinks();
        Year year = (Year) yearLink.getUserObject();
        Event navEvent = new NavigationEvent(year.getItems());
        fireEvent(ureq, navEvent);
        yearLink.setCustomEnabledLinkCSS("o_year o_selected");
    } else if (source == yearLink) {
        // Click on year toggles between year filter and show all filter
        if (showAll) {
            Year year = (Year) yearLink.getUserObject();
            Event navEvent = new NavigationEvent(year.getItems());
            fireEvent(ureq, navEvent);
            // update GUI
            yearLink.setCustomEnabledLinkCSS("o_year o_selected");
            for (Link monthLink : monthLinks) {
                monthLink.setCustomEnabledLinkCSS("o_month");
            }
            showAll = false;
        } else {
            Event navEvent = new NavigationEvent(allObjects);
            fireEvent(ureq, navEvent);
            // update GUI
            yearLink.setCustomEnabledLinkCSS("o_year");
            showAll = true;
        }
    } else if (monthLinks.contains(source)) {
        Link monthLink = (Link) source;
        Month month = (Month) monthLink.getUserObject();
        Event navEvent = new NavigationEvent(month.getItems());
        fireEvent(ureq, navEvent);
        // update GUI
        yearLink.setCustomEnabledLinkCSS("o_year");
        for (Link link : monthLinks) {
            link.setCustomEnabledLinkCSS("o_month");
        }
        monthLink.setCustomEnabledLinkCSS("o_month o_selected");
    }
}
Also used : Event(org.olat.core.gui.control.Event) Link(org.olat.core.gui.components.link.Link)

Example 60 with Event

use of org.olat.core.gui.control.Event in project openolat by klemens.

the class GlossaryTermAndSynonymController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    String glossTerm = glossaryTermField.getValue().trim();
    if (StringHelper.containsNonWhitespace(glossTerm)) {
        if (!glossTerm.equals(glossaryItem.getGlossTerm()) && glossaryItem.getGlossFlexions().size() > 0) {
            showWarning("flexions.warn.after.changed.term");
        }
        glossaryItem.setGlossTerm(glossTerm);
    }
    // save all changes made in existing synonyms
    int oldSynonymCount = glossItemSynonyms.size();
    glossItemSynonyms = new ArrayList<String>();
    for (int i = 0; i < oldSynonymCount; i++) {
        String textElementValue = synonymTextElementList.get(i).getValue().trim();
        if (StringHelper.containsNonWhitespace(textElementValue)) {
            glossItemSynonyms.add(textElementValue);
        }
    }
    String newSynonym = newSynonymField.getValue().trim();
    if (StringHelper.containsNonWhitespace(newSynonym)) {
        glossItemSynonyms.add(newSynonym);
    }
    // remove duplicates and sort
    removeDuplicate(glossItemSynonyms);
    Collections.sort(glossItemSynonyms);
    // update synonym-list and re-initialize
    glossaryItem.setGlossSynonyms(glossItemSynonyms);
    createOrUpdateSynonymLayout(this.flc, glossItemSynonyms);
    Revision revision = new Revision();
    revision.setAuthor(new Author(getIdentity()));
    revision.setJavaDate(new Date());
    if (add) {
        revision.setRevisionflag("added");
    } else {
        revision.setRevisionflag("changed");
    }
    glossaryItem.getRevHistory().add(revision);
    if (!checkForDuplicatesInGlossary()) {
        showError("term.error.alreadyused", duplicateGlossItem.getGlossTerm());
        glossaryTermField.setErrorKey("term.error.alreadyused", new String[] { duplicateGlossItem.getGlossTerm() });
    } else
        fireEvent(ureq, new Event("termOK"));
}
Also used : FormEvent(org.olat.core.gui.components.form.flexible.impl.FormEvent) Event(org.olat.core.gui.control.Event) Date(java.util.Date)

Aggregations

Event (org.olat.core.gui.control.Event)68 FormEvent (org.olat.core.gui.components.form.flexible.impl.FormEvent)14 WindowControl (org.olat.core.gui.control.WindowControl)12 ArrayList (java.util.ArrayList)10 UserRequest (org.olat.core.gui.UserRequest)10 Controller (org.olat.core.gui.control.Controller)10 Identity (org.olat.core.id.Identity)10 RepositoryEntry (org.olat.repository.RepositoryEntry)10 List (java.util.List)8 Link (org.olat.core.gui.components.link.Link)8 OLATResourceable (org.olat.core.id.OLATResourceable)8 ControllerEventListener (org.olat.core.gui.control.ControllerEventListener)6 GenericQtiNode (org.olat.ims.qti.editor.tree.GenericQtiNode)6 QItemViewEvent (org.olat.modules.qpool.ui.events.QItemViewEvent)6 Component (org.olat.core.gui.components.Component)5 TreeEvent (org.olat.core.gui.components.tree.TreeEvent)5 FormLink (org.olat.core.gui.components.form.flexible.elements.FormLink)4 PopEvent (org.olat.core.gui.components.stack.PopEvent)4 TableEvent (org.olat.core.gui.components.table.TableEvent)4 TableMultiSelectEvent (org.olat.core.gui.components.table.TableMultiSelectEvent)4