Search in sources :

Example 1 with Link

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();
        }
    });
}
Also used : TreeViewManager(de.thischwa.pmcms.gui.treeview.TreeViewManager) APoormansObject(de.thischwa.pmcms.model.domain.pojo.APoormansObject) TitleListener(org.eclipse.swt.browser.TitleListener) IOException(java.io.IOException) Point(org.eclipse.swt.graphics.Point) TitleListener(org.eclipse.swt.browser.TitleListener) FillLayout(org.eclipse.swt.layout.FillLayout) Image(org.eclipse.swt.graphics.Image) Shell(org.eclipse.swt.widgets.Shell) TitleEvent(org.eclipse.swt.browser.TitleEvent) CloseWindowListener(org.eclipse.swt.browser.CloseWindowListener) LocationListener(org.eclipse.swt.browser.LocationListener) WindowEvent(org.eclipse.swt.browser.WindowEvent) VisibilityWindowListener(org.eclipse.swt.browser.VisibilityWindowListener) LocationEvent(org.eclipse.swt.browser.LocationEvent) Link(de.thischwa.pmcms.tool.Link) TitleEvent(org.eclipse.swt.browser.TitleEvent) OpenWindowListener(org.eclipse.swt.browser.OpenWindowListener) Browser(org.eclipse.swt.browser.Browser)

Example 2 with Link

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();
}
Also used : VirtualFile(de.thischwa.pmcms.view.renderer.resource.VirtualFile) Pattern(java.util.regex.Pattern) HashMap(java.util.HashMap) Attribute(org.dom4j.Attribute) Matcher(java.util.regex.Matcher) Link(de.thischwa.pmcms.tool.Link)

Aggregations

Link (de.thischwa.pmcms.tool.Link)2 TreeViewManager (de.thischwa.pmcms.gui.treeview.TreeViewManager)1 APoormansObject (de.thischwa.pmcms.model.domain.pojo.APoormansObject)1 VirtualFile (de.thischwa.pmcms.view.renderer.resource.VirtualFile)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1 Attribute (org.dom4j.Attribute)1 Browser (org.eclipse.swt.browser.Browser)1 CloseWindowListener (org.eclipse.swt.browser.CloseWindowListener)1 LocationEvent (org.eclipse.swt.browser.LocationEvent)1 LocationListener (org.eclipse.swt.browser.LocationListener)1 OpenWindowListener (org.eclipse.swt.browser.OpenWindowListener)1 TitleEvent (org.eclipse.swt.browser.TitleEvent)1 TitleListener (org.eclipse.swt.browser.TitleListener)1 VisibilityWindowListener (org.eclipse.swt.browser.VisibilityWindowListener)1 WindowEvent (org.eclipse.swt.browser.WindowEvent)1 Image (org.eclipse.swt.graphics.Image)1 Point (org.eclipse.swt.graphics.Point)1