com.google.gdt.eclipse.designer.model.widgets.NumberLabelInfo.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gdt.eclipse.designer.model.widgets.NumberLabelInfo.java

Source

/*******************************************************************************
 * Copyright 2011 Google Inc. All Rights Reserved.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.google.gdt.eclipse.designer.model.widgets;

import org.eclipse.wb.internal.core.model.creation.CreationSupport;
import org.eclipse.wb.internal.core.model.description.ComponentDescription;
import org.eclipse.wb.internal.core.model.description.CreationDescription;
import org.eclipse.wb.internal.core.model.presentation.DefaultJavaInfoPresentation;
import org.eclipse.wb.internal.core.model.presentation.IObjectPresentation;
import org.eclipse.wb.internal.core.utils.ast.AstEditor;
import org.eclipse.wb.internal.core.utils.ast.AstNodeUtils;

import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.swt.graphics.Image;

import org.apache.commons.lang.StringUtils;

/**
 * Model for <code>com.google.gwt.user.client.ui.NumberLabel</code>.
 * 
 * @author scheglov_ke
 * @coverage gwt.model
 */
public final class NumberLabelInfo extends WidgetInfo {
    ////////////////////////////////////////////////////////////////////////////
    //
    // Constructor
    //
    ////////////////////////////////////////////////////////////////////////////
    public NumberLabelInfo(AstEditor editor, ComponentDescription description, CreationSupport creationSupport)
            throws Exception {
        super(editor, description, creationSupport);
    }

    ////////////////////////////////////////////////////////////////////////////
    //
    // Presentation
    //
    ////////////////////////////////////////////////////////////////////////////
    private final IObjectPresentation m_presentation = new DefaultJavaInfoPresentation(this) {
        @Override
        public Image getIcon() throws Exception {
            Image typeIcon = getTypeIcon();
            if (typeIcon != null) {
                return typeIcon;
            }
            return super.getIcon();
        };
    };

    @Override
    public IObjectPresentation getPresentation() {
        return m_presentation;
    }

    /**
     * @return the icon {@link Image} which corresponds to the type argument of this
     *         <code>NumberLabel</code> instance.
     */
    private Image getTypeIcon() {
        Expression creationExpression = (Expression) getCreationSupport().getNode();
        ITypeBinding creationBinding = AstNodeUtils.getTypeBinding(creationExpression);
        ITypeBinding typeBinding = AstNodeUtils.getTypeBindingArgument(creationBinding, 0);
        String typeName = AstNodeUtils.getFullyQualifiedName(typeBinding, false);
        for (CreationDescription creation : getDescription().getCreations()) {
            if (StringUtils.endsWith(typeName, "." + creation.getId())) {
                return creation.getIcon();
            }
        }
        return null;
    }
}