use of de.thischwa.pmcms.tool.Link in project pmcms by th-schwarz.
the class BrowserManager method initializeBrowser.
private void initializeBrowser(final Shell shell, final Display display, final Browser browser) {
final String urlToIgnore = "about:blank";
final TreeViewManager treeViewManager = this.treeViewManager;
browser.addLocationListener(new LocationListener() {
@Override
public void changing(LocationEvent event) {
if (!event.location.equals(urlToIgnore))
logger.debug("url is changing to: " + event.location);
}
@Override
public void changed(LocationEvent event) {
if (!event.location.equals(urlToIgnore)) {
String url = event.location;
logger.debug("url has changed to: " + url);
Link link = InitializationManager.getBean(Link.class);
link.init(event.location);
if (!link.isPoormansRequest())
return;
String idParam = link.getParameter("id");
if (idParam != null && idParam.equals(APoormansObject.UNSET_VALUE + ""))
idParam = null;
APoormansObject<?> po = StringUtils.isBlank(idParam) ? null : ContextUtil.getpo(link);
// synchronizing with the tree view
treeViewManager.fillAndExpands(po);
// persist the site, if a poormans object was saved
if (url.endsWith(Constants.LINK_IDENTICATOR_SAVE)) {
try {
SitePersister.write(siteHolder.getSite());
} catch (IOException e) {
show(e);
}
}
}
}
});
// visibility handling
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
@Override
public void hide(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.setVisible(false);
}
@Override
public void show(WindowEvent event) {
Browser browser = (Browser) event.widget;
final Shell shell = browser.getShell();
if (event.location != null)
shell.setLocation(event.location);
if (event.size != null) {
Point size = event.size;
shell.setSize(shell.computeSize(size.x, size.y));
}
shell.open();
}
});
// setting title of the shell
browser.addTitleListener(new org.eclipse.swt.browser.TitleListener() {
@Override
public void changed(org.eclipse.swt.browser.TitleEvent event) {
final Browser tmpBrowser = (Browser) event.getSource();
if (mainBrowser.equals(tmpBrowser) && StringUtils.isNotBlank(event.title)) {
mainWindow.setTitle(event.title);
}
}
});
// BEGIN popup handling
browser.addOpenWindowListener(new OpenWindowListener() {
@Override
public void open(WindowEvent event) {
Shell shell = new Shell(display, SWT.APPLICATION_MODAL | SWT.CLOSE);
shell.setImages(new Image[] { ImageHolder.SHELL_ICON_SMALL, ImageHolder.SHELL_ICON_BIG });
shell.setLayout(new FillLayout());
SWTUtils.center(shell, parentShell.getBounds());
Browser browser = getBrowser(shell);
initializeBrowser(shell, display, browser);
final Browser tempBrowser = browser;
browser.addTitleListener(new // set title for the popup
TitleListener() {
@Override
public void changed(TitleEvent event) {
tempBrowser.getShell().setText(event.title);
}
});
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
@Override
public void hide(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.setVisible(false);
}
@Override
public void show(WindowEvent event) {
final Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
if (event.location != null)
shell.setLocation(event.location);
if (event.size != null) {
Point size = event.size;
// hack for bug with too big of safari popups
if (StringUtils.containsIgnoreCase(browserType, "webkit") && (size.x > parentShell.getSize().x || size.y > parentShell.getSize().y)) {
size.x = parentShell.getSize().x - 50;
size.y = parentShell.getSize().y - 50;
shell.setLocation(parentShell.getLocation().x + 15, parentShell.getLocation().y + 15);
shell.setSize(shell.computeSize(size.x, size.y));
} else
shell.setSize(shell.computeSize(size.x, size.y));
}
shell.open();
}
});
event.browser = browser;
}
});
// END popup handling
browser.addCloseWindowListener(new CloseWindowListener() {
@Override
public void close(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.close();
}
});
}
use of de.thischwa.pmcms.tool.Link in project pmcms by th-schwarz.
the class VelocityUtils method generateVelocityLinkToolCall.
/**
* Construct the {@link de.thischwa.pmcms.view.context.object.tagtool.LinkTagTool}-call.
*/
@SuppressWarnings("unchecked")
private static String generateVelocityLinkToolCall(final Site site, final Element tagElement) {
StringBuilder veloMacro = new StringBuilder();
final Pattern aTagPattern = Pattern.compile("<a\\b[^>]*>(.*?)</a>");
Map<String, String> attr = new HashMap<String, String>();
veloMacro.append("$linktagtool");
for (Iterator<Attribute> iter = tagElement.attributeIterator(); iter.hasNext(); ) {
Attribute attribute = iter.next();
attr.put(attribute.getName(), attribute.getValue());
}
String href = attr.get("href");
Link link = InitializationManager.getBean(Link.class);
link.init(href);
if (link.isExternal()) {
veloMacro.append(".setHref(\"").append(href).append("\")");
} else {
VirtualFile fileResource = new VirtualFile(site, false);
fileResource.consructFromTagFromView(href);
veloMacro.append(".setHref(\"").append(fileResource.getTagSrcForPreview()).append("\")");
}
String value;
Matcher matcher = aTagPattern.matcher(tagElement.asXML());
if (matcher.matches())
value = matcher.group(1);
else
value = tagElement.getText();
veloMacro.append(".setTagValue(\"").append(value).append("\")");
for (String key : attr.keySet()) {
if (!key.equals("href"))
veloMacro.append(".setAttribute(\"").append(key).append("\", \"").append(attr.get(key)).append("\")");
}
return veloMacro.toString();
}
Aggregations