Package com.ibm.richtext.uiimpl

Source Code of com.ibm.richtext.uiimpl.SubtractStyleMenuItem

/*
* (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
*
* The program is provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* IBM will not be liable for any damages suffered by you as a result
* of using the Program. In no event will IBM be liable for any
* special, indirect or consequential damages or lost profits even if
* IBM has been advised of the possibility of their occurrence. IBM
* will not be liable for any third party claims against you.
*/
package com.ibm.richtext.uiimpl;

import java.util.EventObject;

import com.ibm.richtext.textlayout.attributes.AttributeMap;
import com.ibm.richtext.textlayout.attributes.AttributeSet;
import com.ibm.richtext.styledtext.StyleModifier;

import com.ibm.richtext.textpanel.MTextPanel;
import com.ibm.richtext.textpanel.TextPanelEvent;
import com.ibm.richtext.uiimpl.resources.MenuData;

public final class SubtractStyleMenuItem extends SingleCheckMenuItem {

    static final String COPYRIGHT =
                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
    private final Object[] fKeys;
   
    private final boolean fCharacter;
   
    public SubtractStyleMenuItem(Object[] keys,
                                 MenuData menuData,
                                 boolean character) {
       
        super(menuData);
       
        fKeys = (Object[]) keys.clone();
        fCharacter = character;
       
        AttributeSet keySet = new AttributeSet(keys);
        final StyleModifier modifier = StyleModifier.createRemoveModifier(keySet);
       
        fItem.addListener(new EventListener() {
            public void eventOccurred(EventObject event) {
                MTextPanel panel = getTextPanel();
                if (panel == null) {
                    throw new Error("Menu item is enabled when panel is null!");
                }

                if (fCharacter == CHARACTER) {
                    panel.modifyCharacterStyleOnSelection(modifier);
                }
                else {
                    panel.modifyParagraphStyleOnSelection(modifier);
                }
            }
        });
    }
   
    private static boolean objectsAreEqual(Object lhs, Object rhs) {
   
        if (lhs == null) {
            return rhs == null;
        }
        else {
            return lhs.equals(rhs);
        }
    }

    protected void setChecked() {

        MTextPanel panel = getTextPanel();
        AttributeMap defaults = panel.getDefaultValues();
       
        for (int i=0; i < fKeys.length; i++) {
            Object defaultV = defaults.get(fKeys[i]);
           
            Object value = (fCharacter == CHARACTER)?
                    panel.getCharacterStyleOverSelection(fKeys[i]) :
                    panel.getParagraphStyleOverSelection(fKeys[i]);
                   
            if (!objectsAreEqual(defaultV, value)) {
                fItem.setState(false);
                return;
            }
        }

        fItem.setState(true);
    }

    public boolean respondsToEventType(int type) {
       
        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
    }
   
    public final void textEventOccurred(TextPanelEvent event) {
       
        setChecked();
    }
}
TOP

Related Classes of com.ibm.richtext.uiimpl.SubtractStyleMenuItem

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.