You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by js...@apache.org on 2003/02/26 10:23:29 UTC
cvs commit: jakarta-commons/jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface JFaceDemo.jelly
jstrachan 2003/02/26 01:23:28
Added: jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface
ApplicationWindowTag.java
DoubleClickListenerTag.java JFaceTagLibrary.java
MenuManagerTag.java ViewerTag.java
SelectionChangedListenerTag.java ActionTag.java
ContributionItemTag.java package.html
jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/impl
ApplicationWindowImpl.java
jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface
JFaceDemo.jelly
Log:
Applied patches supplied by Christiaan ten Klooster
Revision Changes Path
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ApplicationWindowTag.java
Index: ApplicationWindowTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import java.util.Map;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.jelly.tags.core.UseBeanTag;
import org.apache.commons.jelly.tags.jface.impl.ApplicationWindowImpl;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
/**
* This tag creates an JFace ApplicationWindow
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class ApplicationWindowTag extends UseBeanTag {
private Shell parent;
private int style = SWT.NULL;
/**
* @param widgetClass
*/
public ApplicationWindowTag(Class tagClass) {
super(tagClass);
}
/*
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
Map attributes = getAttributes();
Object parent = attributes.remove("parent");
if (parent != null) {
if (parent instanceof Shell) {
this.parent = (Shell) parent;
} else {
throw new JellyTagException(
"The parent attribute is not a Shell, it is of type: "
+ parent.getClass().getName()
+ " value: "
+ parent);
}
}
super.doTag(output);
}
/*
* @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
*/
protected Object newInstance(
Class theClass,
Map attributes,
XMLOutput output)
throws JellyTagException {
return new ApplicationWindowImpl(parent);
}
/**
* @return the visible window, if there is one.
*/
public Window getWindow() {
Object bean = getBean();
if (bean instanceof Window) {
return (Window) bean;
}
return null;
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/DoubleClickListenerTag.java
Index: DoubleClickListenerTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.TagSupport;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.Viewer;
/**
* This tag adds a listener for double-clicks in this viewer.
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class DoubleClickListenerTag
extends TagSupport
implements IDoubleClickListener {
/** The Log to which logging calls will be made. */
private static final Log log = LogFactory.getLog(DoubleClickListenerTag.class);
private String var = "event";
private XMLOutput output;
/*
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
if (var == null) {
throw new MissingAttributeException("var");
}
StructuredViewer viewer = getParentViewer();
if (viewer == null) {
throw new JellyTagException("This tag must be nested within a viewer tag");
}
viewer.addDoubleClickListener(this);
this.output = output;
}
public StructuredViewer getParentViewer() {
ViewerTag tag = (ViewerTag) findAncestorWithClass(ViewerTag.class);
if (tag != null) {
Viewer viewer = tag.getViewer();
if (viewer instanceof StructuredViewer) {
return (StructuredViewer) viewer;
}
}
return null;
}
/**
* @return String
*/
public String getVar() {
return var;
}
/**
* Sets the var.
* @param var The var to set
*/
public void setVar(String var) {
this.var = var;
}
// Listener interface
//-------------------------------------------------------------------------
/*
* @see org.eclipse.jface.viewers.IDoubleClickListener#doubleClick(org.eclipse.jface.viewers.DoubleClickEvent)
*/
public void doubleClick(DoubleClickEvent event) {
try {
context.setVariable(var, event);
invokeBody(output);
} catch (Exception e) {
log.error(
"Caught exception: " + e + " while processing event: " + event,
e);
}
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java
Index: JFaceTagLibrary.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import org.apache.commons.jelly.JellyException;
import org.apache.commons.jelly.Tag;
import org.apache.commons.jelly.impl.TagFactory;
import org.apache.commons.jelly.tags.swt.SwtTagLibrary;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.TableTreeViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.xml.sax.Attributes;
/**
* A Jelly custom tag library that creates JFace user interfaces
* This taglib extends the SWT tag lib
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class JFaceTagLibrary extends SwtTagLibrary {
public JFaceTagLibrary() {
// Viewer tags
registerViewerTag("tableViewer", TableViewer.class);
registerViewerTag("tableTreeViewer", TableTreeViewer.class);
registerViewerTag("treeViewer", TreeViewer.class);
registerViewerTag("checkboxTreeViewer", CheckboxTreeViewer.class);
// Event tags
registerTag("doubleClickListener", DoubleClickListenerTag.class);
registerTag(
"selectionChangedListener",
SelectionChangedListenerTag.class);
// Window tags
registerWindowTag("applicationWindow", ApplicationWindow.class);
// ContributionManager tags
registerMenuManager("menuManager", MenuManagerTag.class);
// Action tags
registerActionTag("action", ActionTag.class);
// ContributionItem tags
registerContributionItemTag("separator", Separator.class);
}
/**
* Register a widget tag for the given name
*
* @param name
* @param widgetClass
*/
protected void registerViewerTag(String name, Class widgetClass) {
registerViewerTag(name, widgetClass, SWT.NULL);
}
/**
* Register a widget tag for the given name
*
* @param name
* @param widgetClass
* @param style
*/
protected void registerViewerTag(
String name,
final Class theclass,
final int style) {
registerTagFactory(name, new TagFactory() {
/**
* @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
*/
public Tag createTag(String name, Attributes attributes)
throws JellyException {
return new ViewerTag(theclass, style);
}
});
}
/**
* @param string
* @param class1
*/
private void registerMenuManager(String name, final Class theClass) {
registerTagFactory(name, new TagFactory() {
/**
* @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
*/
public Tag createTag(String name, Attributes attributes)
throws JellyException {
return new MenuManagerTag();
}
});
}
/**
* Register a widget tag for the given name
*
* @param widgetClass
* @param style
*/
protected void registerWindowTag(String name, final Class theClass) {
registerTagFactory(name, new TagFactory() {
/**
* @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
*/
public Tag createTag(String name, Attributes attributes)
throws JellyException {
return new ApplicationWindowTag(theClass);
}
});
}
/**
* Register a widget tag for the given name
*/
protected void registerActionTag(String name, final Class theClass) {
registerTagFactory(name, new TagFactory() {
/**
* @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
*/
public Tag createTag(String name, Attributes attributes)
throws JellyException {
return new ActionTag(theClass);
}
});
}
/**
* Register a widget tag for the given name
*/
protected void registerContributionItemTag(
String name,
final Class theClass) {
registerTagFactory(name, new TagFactory() {
/**
* @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
*/
public Tag createTag(String name, Attributes attributes)
throws JellyException {
return new ContributionItemTag(theClass);
}
});
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java
Index: MenuManagerTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import java.util.Map;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.jelly.tags.core.UseBeanTag;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
/**
* This tag creates an JFace MenuManager
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class MenuManagerTag extends UseBeanTag {
private String text;
private MenuManager mm;
/**
* @return the parent window which this widget will be added to.
*/
public Window getParentWindow() {
ApplicationWindowTag tag =
(ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag
.class);
if (tag != null) {
return tag.getWindow();
}
return null;
}
/* (non-Javadoc)
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
Map attributes = getAttributes();
text = attributes.remove("text").toString();
if (text == null)
throw new MissingAttributeException("text attribute is missing");
mm = new MenuManager(text);
ApplicationWindow window = (ApplicationWindow) getParentWindow();
if (window != null) {
window.getMenuBarManager().add(mm);
}
// invoke by body just in case some nested tag configures me
invokeBody(output);
}
/**
* @return MenuManager
*/
public MenuManager getMenuManager() {
return mm;
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java
Index: ViewerTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import java.util.Map;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.jelly.tags.swt.WidgetTag;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Widget;
/**
* This tag creates an JFace Viewer
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class ViewerTag extends WidgetTag {
private Composite parent;
private int style = SWT.NULL;
/**
* @param widgetClass
*/
public ViewerTag(Class widgetClass) {
super(widgetClass);
}
/**
* @param widgetClass
* @param style
*/
public ViewerTag(Class widgetClass, int style) {
super(widgetClass);
this.style = style;
}
/*
* @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
*/
protected Object newInstance(
Class theClass,
Map attributes,
XMLOutput output)
throws JellyTagException {
int style = getStyle(attributes);
// now lets call the constructor with the parent
Widget parent = getParentWidget();
Viewer viewer = (Viewer) createWidget(theClass, parent, style);
return viewer;
}
/**
* @return the visible viewer, if there is one.
*/
public Viewer getViewer() {
Object bean = getBean();
if (bean instanceof Viewer) {
return (Viewer) bean;
}
return null;
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/SelectionChangedListenerTag.java
Index: SelectionChangedListenerTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.TagSupport;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
/**
* This tag adds a listener for selection changes in this viewer.
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class SelectionChangedListenerTag
extends TagSupport
implements ISelectionChangedListener {
/** The Log to which logging calls will be made. */
private static final Log log =
LogFactory.getLog(SelectionChangedListenerTag.class);
private String var = "event";
private XMLOutput output;
/*
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
if (var == null) {
throw new MissingAttributeException("var");
}
Viewer viewer = getParentViewer();
if (viewer == null) {
throw new JellyTagException("This tag must be nested within a viewer tag");
}
viewer.addSelectionChangedListener(this);
this.output = output;
}
public Viewer getParentViewer() {
ViewerTag tag = (ViewerTag) findAncestorWithClass(ViewerTag.class);
if (tag != null) {
return tag.getViewer();
}
return null;
}
/**
* @return String
*/
public String getVar() {
return var;
}
/**
* Sets the var.
* @param var The var to set
*/
public void setVar(String var) {
this.var = var;
}
// Listener interface
//-------------------------------------------------------------------------
/*
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
public void selectionChanged(SelectionChangedEvent event) {
try {
context.setVariable(var, event);
invokeBody(output);
} catch (Exception e) {
log.error(
"Caught exception: " + e + " while processing event: " + event,
e);
}
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ActionTag.java
Index: ActionTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import java.util.Map;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.jelly.tags.core.UseBeanTag;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.swt.widgets.Event;
/**
* This tag creates an JFace Action
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class ActionTag extends UseBeanTag {
/**
* Implementing Action class
*/
class ActionImpl extends Action {
public void runWithEvent(Event event) {
try {
context.setVariable(var, event);
invokeBody(output);
} catch (Exception e) {
log.error(
"Caught exception: "
+ e
+ " while processing event: "
+ event,
e);
}
}
}
/** The Log to which logging calls will be made. */
private static final Log log = LogFactory.getLog(ActionTag.class);
private XMLOutput output;
private String var = "event";
/**
* @param arg0
*/
public ActionTag(Class arg0) {
super(arg0);
}
/**
* @return IContributionManager
*/
protected IContributionManager getParentContributionManager() {
MenuManagerTag tag =
(MenuManagerTag) findAncestorWithClass(MenuManagerTag.class);
if (tag != null) {
return tag.getMenuManager();
}
return null;
}
/**
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
Map attributes = getAttributes();
Action action = new ActionImpl();
setBeanProperties(action, attributes);
IContributionManager cm = getParentContributionManager();
if (cm != null) {
cm.add(action);
}
this.output = output;
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ContributionItemTag.java
Index: ContributionItemTag.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface;
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.MissingAttributeException;
import org.apache.commons.jelly.XMLOutput;
import org.apache.commons.jelly.tags.core.UseBeanTag;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionManager;
/**
* This tag creates an JFace ContributionItem
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class ContributionItemTag extends UseBeanTag {
public ContributionItemTag(Class arg0) {
super(arg0);
}
/**
* @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
*/
public void doTag(XMLOutput output)
throws MissingAttributeException, JellyTagException {
super.doTag(output);
Object bean = getBean();
if (bean != null && bean instanceof ContributionItem) {
IContributionManager cm = getParentContributionManager();
if (cm != null) {
cm.add((ContributionItem) bean);
}
}
}
/**
* @return IContributionManager
*/
protected IContributionManager getParentContributionManager() {
MenuManagerTag tag =
(MenuManagerTag) findAncestorWithClass(MenuManagerTag.class);
if (tag != null) {
return tag.getMenuManager();
}
return null;
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/package.html
Index: package.html
===================================================================
<html>
<head>
</head>
<body>
<p>
The JellyJFace Library is a Jelly Library for creating Rich User Interfaces
using SWT and JFace via XML markup (a Jelly script).
JellyJFace is an eextension of JellySWT to add support for the JFace framework.
</p>
</body>
</html>
1.1 jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/impl/ApplicationWindowImpl.java
Index: ApplicationWindowImpl.java
===================================================================
/*
* /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
* 1.1
* 2002/12/18 15:27:49
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
*/
package org.apache.commons.jelly.tags.jface.impl;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
* This is the default implementation for a ApplicationWindowTag
*
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
*/
public class ApplicationWindowImpl extends ApplicationWindow {
/**
* @param shell
*/
public ApplicationWindowImpl(Shell parentShell) {
super(parentShell);
// default at all
addMenuBar();
addStatusLine();
addToolBar(SWT.NULL);
setBlockOnOpen(true);
// create window
create();
}
/*
* override to make public
* @see org.eclipse.jface.window.Window#getContents()
*/
public Control getContents() {
return super.getContents();
}
}
1.1 jakarta-commons/jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly
Index: JFaceDemo.jelly
===================================================================
<?xml version="1.0"?>
<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">
<applicationWindow var="mainapp">
<menuManager text="File">
<action text="Test">
<log:error> Very Nice !!!</log:error>
</action>
<separator />
<action text="Check me" checked="true" />
</menuManager>
<menuManager text="Edit">
<action text="Say Hi Statusbar">
${mainapp.setStatus('Hello ...')}
</action>
</menuManager>
<!--
<fillLayout type="vertical"/>
-->
<label text="A big red label 1" background="204, 0, 0"/>
<label text="I can barelly read this ;-(" foreground="#f2f2f2" />
<label text="It sure looks like the dutch flag ;-)" foreground="#ffffff" background="0, 0, 153" />
</applicationWindow>
${mainapp.MenuBarManager.updateAll(true)}
${mainapp.open()}
</j:jelly>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org