/******************************************************************************* * Copyright (c) 2006 IBM Corporation and others. * 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 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.examples.views.properties.tabbed.article.views; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Button; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.eclipse.ui.views.properties.IPropertySource; import org.eclipse.ui.views.properties.PropertyDescriptor; import org.eclipse.ui.views.properties.TextPropertyDescriptor; /** * The property source provider for a button element. * * @author Anthony Hunter */ public class ButtonElementProperties implements IPropertySource { final protected ButtonElement element; protected static final String PROPERTY_FONT = "font"; //$NON-NLS-1$ protected static final String PROPERTY_SIZE = "size"; //$NON-NLS-1$ protected static final String PROPERTY_TEXT = "text"; //$NON-NLS-1$ private final Object PropertiesTable[][] = { {PROPERTY_FONT, new FontPropertyDescriptor(PROPERTY_FONT, "Font")},//$NON-NLS-1$ {PROPERTY_SIZE, new PropertyDescriptor(PROPERTY_SIZE, "Size")},//$NON-NLS-1$ {PROPERTY_TEXT, new TextPropertyDescriptor(PROPERTY_TEXT, "Text")}, //$NON-NLS-1$ }; String strFont = "";//$NON-NLS-1$ Point ptSize = null; String strText = "";//$NON-NLS-1$ protected void firePropertyChanged(String propName, Object value) { Button ctl = element.getControl(); if (ctl == null) { // the GUIView is probably hidden in this case return; } if (propName.equals(PROPERTY_FONT)) { /** * Font oldfont = ctl.getFont(); if (oldfont != null) { * oldfont.dispose(); } */ ctl .setFont(new Font(ctl.getDisplay(), new FontData((String) value))); return; } if (propName.equals(PROPERTY_TEXT)) { ctl.setText((String) value); return; } } protected void initProperties() { Button ctl = element.getControl(); if (ctl == null) { // the GUIView is probably hidden in this case return; } strText = ctl.getText(); /** * Font font = ctl.getFont(); if (font != null) { strFont = * font.getFontData().toString(); } */ ptSize = ctl.getSize(); } /** * Creates a new ButtonElementProperties. * * @param element * the element whose properties this instance represents */ public ButtonElementProperties(ButtonElement element) { super(); this.element = element; initProperties(); } /** * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue() */ public Object getEditableValue() { return this; } /** * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors() */ public IPropertyDescriptor[] getPropertyDescriptors() { // Create the property vector. IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[PropertiesTable.length]; for (int i = 0; i < PropertiesTable.length; i++) { // Add each property supported. PropertyDescriptor descriptor; descriptor = (PropertyDescriptor) PropertiesTable[i][1]; propertyDescriptors[i] = descriptor; descriptor.setCategory("Basic");//$NON-NLS-1$ } // Return it. return propertyDescriptors; } /** * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(Object) */ public Object getPropertyValue(Object name) { if (name.equals(PROPERTY_FONT)) return strFont; if (name.equals(PROPERTY_SIZE)) return new SizePropertySource(element, ptSize); if (name.equals(PROPERTY_TEXT)) return strText; return null; } /** * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(Object) */ public boolean isPropertySet(Object id) { return false; } /** * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(Object) */ public void resetPropertyValue(Object id) { // } /** * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(Object, * Object) */ public void setPropertyValue(Object name, Object value) { firePropertyChanged((String) name, value); if (name.equals(PROPERTY_FONT)) { strFont = (String) value; return; } if (name.equals(PROPERTY_TEXT)) { strText = (String) value; return; } if (name.equals(PROPERTY_SIZE)) { SizePropertySource sizeProp = (SizePropertySource) value; ptSize = sizeProp.getValue(); } } /** * Returns the mocha element. * * @return MochaElement */ public ButtonElement getButtonElement() { return element; } }