Package com.webobjects.woextensions

Source Code of com.webobjects.woextensions.WXOutlineEntry

/*
* WXOutlineEntry.java
* (c) Copyright 2001 Apple Computer, Inc. All rights reserved.
* This a modified version.
* Original license: http://www.opensource.apple.com/apsl/
*/

package com.webobjects.woextensions;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.appserver.WORequest;
import com.webobjects.appserver.WOResponse;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSRange;

public class WXOutlineEntry extends WOComponent {
  /**
   * Do I need to update serialVersionUID?
   * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
   * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
   */
  private static final long serialVersionUID = 1L;

    protected int _nestingLevel;

    public WXOutlineEntry(WOContext aContext)  {
        super(aContext);
    }

    /////////////
    // No-Sync
    ////////////
    @Override
    public boolean synchronizesVariablesWithBindings() {
        return false;
    }

    @Override
    public void awake() {
        super.awake();
        Object nestLevelBinding = _WOJExtensionsUtil.valueForBindingOrNull("nestingLevel",this);
        if (nestLevelBinding instanceof Number) {
            _nestingLevel = ((Number)nestLevelBinding).intValue();
            return;
        }

        if ((nestLevelBinding == null) || nestLevelBinding.equals("")) {
            _nestingLevel = 0;
            return;
        }
        try {
            _nestingLevel = Integer.parseInt(nestLevelBinding.toString());
        } catch (NumberFormatException e) {
            throw new IllegalStateException("WXOutLineEntry - problem parsing int from nestingLevel binding "+e);
        }
    }

    public int nestingLevel() {
        return _nestingLevel;
    }

    public boolean isExpanded() {
        Object currentItem = valueForBinding("item");
        NSArray selectionPath = (NSArray)_WOJExtensionsUtil.valueForBindingOrNull("selectionPath",this);
        return (_nestingLevel < selectionPath.count())
            && selectionPath.objectAtIndex(_nestingLevel).equals(currentItem);
    }

    public int nestingLevelForChildren() {
        return _nestingLevel+1;
    }

    public WOComponent toggleExpansion() {
        @SuppressWarnings("unchecked")
    NSArray<Object> selectionPath = (NSArray<Object>)_WOJExtensionsUtil.valueForBindingOrNull("selectionPath",this);

        selectionPath = selectionPath.subarrayWithRange(new NSRange(0, _nestingLevel));

        if (!isExpanded()) {
            Object currentItem = valueForBinding("item");
    //        NSLog(@"*** currentItem=%@", currentItem);
            selectionPath = selectionPath.arrayByAddingObject(currentItem);
        }

        setValueForBinding(selectionPath, "selectionPath");
        return null;
    }

    public boolean hasChildren() {
        return ((Boolean)valueForBinding("hasChildren")).booleanValue();
    }


    @Override
    public void takeValuesFromRequest(WORequest aRequest, WOContext aContext) {
        session().setObjectForKey(this, "_outlineEntry");
        super.takeValuesFromRequest(aRequest, aContext);
    }

    @Override
    public WOActionResults invokeAction(WORequest aRequest, WOContext aContext) {
        WOActionResults returnElement;
        session().setObjectForKey(this, "_outlineEntry");
        returnElement = super.invokeAction(aRequest, aContext);
        return returnElement;
    }

    @Override
    public void appendToResponse(WOResponse aResponse, WOContext aContext) {
        session().setObjectForKey(this, "_outlineEntry");
        super.appendToResponse(aResponse, aContext);
    }
}
TOP

Related Classes of com.webobjects.woextensions.WXOutlineEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.