use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class BaseFullWebappController method addDTab.
@Override
public boolean addDTab(UserRequest ureq, DTab dt) {
if (isDisposed()) {
return false;
}
DTab old = getDTab(dt.getOLATResourceable());
if (old != null) {
return true;
}
// add to tabs list
synchronized (dtabs) {
// make dtabs and dtabsControllers access synchronized
dtabs.add(dt);
dtabsLinkNames.add(dtabCreateCounter);
Link link = LinkFactory.createCustomLink("a" + dtabCreateCounter, "a" + dtabCreateCounter, "", Link.NONTRANSLATED, navTabsVc, this);
link.setCustomDisplayText(StringHelper.escapeHtml(dt.getNavElement().getTitle()));
link.setIconLeftCSS("o_icon o_icon-fw " + dt.getNavElement().getIconCSSClass());
link.setTitle(dt.getTitle());
link.setUserObject(dt);
// Set accessibility access key using the 's' key. You can loop through all opened tabs by
// pressing s repetitively (works only in IE/FF which is normally used by blind people)
link.setAccessKey("s");
// add close links
Link calink = LinkFactory.createCustomLink("c" + dtabCreateCounter, "c" + dtabCreateCounter, "", Link.NONTRANSLATED, navTabsVc, this);
calink.setCustomEnabledLinkCSS("o_navbar_tab_close");
calink.setIconLeftCSS("o_icon o_icon_close_tab");
calink.setTitle(translate("close"));
calink.setUserObject(dt);
Controller dtabCtr = dt.getController();
dtabCtr.addControllerListener(this);
updateBusinessPath(ureq, dt);
// add to tabs controller lookup table for later event dispatching
dtabsControllers.add(dtabCtr);
// increase DTab added counter.
dtabCreateCounter++;
}
return true;
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class BCPeekviewController 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 instanceof Link) {
Link nodeLink = (Link) source;
String relPath = (String) nodeLink.getUserObject();
if (relPath == null) {
fireEvent(ureq, new OlatCmdEvent(OlatCmdEvent.GOTONODE_CMD, nodeId));
} else {
fireEvent(ureq, new OlatCmdEvent(OlatCmdEvent.GOTONODE_CMD, nodeId + "/" + relPath));
}
}
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class GlossaryMainController 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 == addButton) {
removeAsListenerAndDispose(glossEditCtrl);
glossEditCtrl = new GlossaryItemEditorController(ureq, getWindowControl(), glossaryFolder, glossaryItemList, null, true);
listenTo(glossEditCtrl);
removeAsListenerAndDispose(cmc);
cmc = new CloseableModalController(getWindowControl(), "close", glossEditCtrl.getInitialComponent());
cmc.activate();
listenTo(cmc);
} else if (source instanceof Link) {
Link button = (Link) source;
String cmd = button.getCommand();
if (button.getUserObject() instanceof GlossaryItem) {
GlossaryItem currentGlossaryItem = (GlossaryItem) button.getUserObject();
if (cmd.startsWith(CMD_EDIT)) {
removeAsListenerAndDispose(glossEditCtrl);
glossEditCtrl = new GlossaryItemEditorController(ureq, getWindowControl(), glossaryFolder, glossaryItemList, currentGlossaryItem, false);
listenTo(glossEditCtrl);
removeAsListenerAndDispose(cmc);
cmc = new CloseableModalController(getWindowControl(), "close", glossEditCtrl.getInitialComponent());
cmc.activate();
listenTo(cmc);
} else if (button.getCommand().startsWith(CMD_DELETE)) {
currentDeleteItem = currentGlossaryItem;
if (deleteDialogCtr != null) {
deleteDialogCtr.dispose();
}
deleteDialogCtr = activateYesNoDialog(ureq, null, translate("glossary.delete.dialog", StringHelper.escapeHtml(currentGlossaryItem.getGlossTerm())), deleteDialogCtr);
}
} else if (button.getCommand().startsWith(REGISTER_LINK)) {
filterIndex = cmd.substring(cmd.lastIndexOf(".") + 1);
updateRegisterAndGlossaryItems();
}
} else if (source == glistVC) {
String cmd = event.getCommand();
if (cmd.startsWith(CMD_AUTHOR)) {
String url = event.getCommand().substring(CMD_AUTHOR.length());
openProfil(ureq, url, true);
} else if (cmd.startsWith(CMD_MODIFIER)) {
String url = event.getCommand().substring(CMD_MODIFIER.length());
openProfil(ureq, url, false);
}
}
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class GlossaryMainController method getIndexLinkList.
/**
* create a List with all Indexes in this Glossary
*
* @param gIList
* @return List containing the Links.
*/
protected List<Link> getIndexLinkList(List<GlossaryItem> gIList) {
Set<String> addedKeys = new HashSet<>();
// get existing indexes
GlossaryItem[] gIArray = gIList.toArray(new GlossaryItem[gIList.size()]);
for (GlossaryItem gi : gIArray) {
String indexChar = gi.getIndex();
if (!addedKeys.contains(indexChar)) {
addedKeys.add(indexChar);
}
}
// build register, first found should be used later on
char alpha;
boolean firstIndexFound = false;
List<Link> indexLinkList = new ArrayList<>(gIList.size());
for (alpha = 'A'; alpha <= 'Z'; alpha++) {
String indexChar = String.valueOf(alpha);
Link indexLink = LinkFactory.createCustomLink(REGISTER_LINK + indexChar, REGISTER_LINK + indexChar, indexChar, Link.NONTRANSLATED, glistVC, this);
if (!addedKeys.contains(indexChar)) {
indexLink.setEnabled(false);
} else if (!filterIndex.equals("all") && !firstIndexFound && !addedKeys.contains(filterIndex)) {
filterIndex = indexChar;
firstIndexFound = true;
}
indexLinkList.add(indexLink);
}
return indexLinkList;
}
use of org.olat.core.gui.components.link.Link in project openolat by klemens.
the class GlossaryMainController method updateView.
/**
* @param List with GlossaryItems
* @return a list (same size as GlossaryItems) which contains again lists with
* one editButton and one deleteButton
*/
private List<GlossaryItemWrapper> updateView(ArrayList<GlossaryItem> gIList, String choosenFilterIndex) {
int linkNum = 1;
Set<String> keys = new HashSet<String>();
StringBuilder bufDublicates = new StringBuilder();
List<GlossaryItemWrapper> items = new ArrayList<GlossaryItemWrapper>();
Collections.sort(gIList);
glistVC.contextPut("filterIndex", choosenFilterIndex);
if (!filterIndex.equals("all")) {
// highlight filtered index
Link indexLink = (Link) glistVC.getComponent(REGISTER_LINK + choosenFilterIndex);
if (indexLink != null) {
indexLink.setCustomEnabledLinkCSS("o_glossary_register_active");
}
}
for (GlossaryItem gi : gIList) {
boolean canEdit = glossarySecCallback.canEdit(gi);
if (canEdit) {
Link tmpEditButton = LinkFactory.createCustomLink(CMD_EDIT + linkNum, CMD_EDIT + linkNum, "cmd.edit", Link.BUTTON_XSMALL, glistVC, this);
tmpEditButton.setIconLeftCSS("o_icon o_icon_edit o_icon-fw");
tmpEditButton.setUserObject(gi);
Link tmpDelButton = LinkFactory.createCustomLink(CMD_DELETE + linkNum, CMD_DELETE + linkNum, "cmd.delete", Link.BUTTON_XSMALL, glistVC, this);
tmpDelButton.setUserObject(gi);
tmpDelButton.setIconLeftCSS("o_icon o_icon_delete_item o_icon-fw");
}
GlossaryItemWrapper wrapper = new GlossaryItemWrapper(gi, linkNum);
if (keys.contains(gi.getGlossTerm()) && (bufDublicates.indexOf(gi.getGlossTerm()) == -1)) {
bufDublicates.append(gi.getGlossTerm());
bufDublicates.append(" ");
} else {
keys.add(gi.getGlossTerm());
}
items.add(wrapper);
linkNum++;
}
if ((bufDublicates.length() > 0) && glossarySecCallback.canAdd()) {
showWarning("warning.contains.dublicates", bufDublicates.toString());
}
return items;
}
Aggregations