XLabel.java :  » Workflow-Engines » osbl-1_0 » org » osbl » client » wings » Java Open Source

Java Open Source » Workflow Engines » osbl 1_0 
osbl 1_0 » org » osbl » client » wings » XLabel.java
package org.osbl.client.wings;

import org.wings.*;

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.net.URLEncoder;
import java.io.UnsupportedEncodingException;

public class XLabel
    extends SLabel
    implements LowLevelEventListener
{
    private static final Pattern PATTERN = Pattern.compile("\\[[^\\[\\]]+\\]");

    String rawText;
    boolean ajaxLinking;
    private String event;

    public boolean isAjaxLinking() {
        return ajaxLinking;
    }

    public void setAjaxLinking(boolean ajaxLinking) {
        this.ajaxLinking = ajaxLinking;
        setText(parse(rawText));
    }

    public void setXText(String rawText) {
        this.rawText = rawText;
        setText(parse(rawText));
    }

    protected String parse(String xText) {
        if (xText == null)
            return null;

        StringBuffer buffer = new StringBuffer("<html>");

        Matcher matcher = PATTERN.matcher(xText);
        while (matcher.find()) {
            String link = xText.substring(matcher.start() + 1, matcher.end() - 1);
            int pos = link.indexOf(' ');
            if (pos != -1)
                matcher.appendReplacement(buffer, "<a href=\"" + encode(link.substring(0, pos)) + "\">" + link.substring(pos + 1) + "</a>");
            else
                matcher.appendReplacement(buffer, "<a href=\"" + encode(link) + "\">" + link + "</a>");
        }
        matcher.appendTail(buffer);

        return buffer.toString();
    }

    private String encode(String link) {
        if (ajaxLinking) {
            int pos = link.indexOf('?');
            if (pos != -1)
                link = link.substring(pos + 1);
            try {
                link = URLEncoder.encode(link, "UTF-8");
            }
            catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            return "javascript:wingS.request.sendEvent(null,true,true,'" + getName() + "', '1&" + link + "');";
        }
        else
            return link;
    }

    public void processLowLevelEvent(String name, String[] values) {
        event = values[0];
        SForm.addArmedComponent(this);
    }

    public void fireIntermediateEvents() {
    }

    public void fireFinalEvents() {
        super.fireFinalEvents();
        if (event != null) {
            handleEvent();
            event = null;
        }
    }

    protected void handleEvent() {
    }

    public boolean isEpochCheckEnabled() {
        return false;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.