/******************************************************************************* * Copyright (c) 2011 Google, Inc. * 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: * Google, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.wb.internal.core.model.property.editor.presentation; import org.eclipse.wb.internal.core.DesignerPlugin; import org.eclipse.wb.internal.core.EnvironmentUtils; import org.eclipse.wb.internal.core.model.property.Property; import org.eclipse.wb.internal.core.model.property.table.PropertyTable; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; /** * Implementation of {@link PropertyEditorPresentation} for displaying {@link Button}. * * @author scheglov_ke * @author mitin_aa * @coverage core.model.property.editor */ public abstract class ButtonPropertyEditorPresentation extends PropertyEditorPresentation { private final int m_style; private final ButtonPropertyEditorPresentationImpl m_impl; //////////////////////////////////////////////////////////////////////////// // // Constructors // //////////////////////////////////////////////////////////////////////////// public ButtonPropertyEditorPresentation() { this(SWT.NONE); } public ButtonPropertyEditorPresentation(int style) { m_style = style; m_impl = EnvironmentUtils.IS_MAC ? new ButtonPropertyEditorPresentationImplMac(this) : new ButtonPropertyEditorPresentationImpl(this); } //////////////////////////////////////////////////////////////////////////// // // Access // //////////////////////////////////////////////////////////////////////////// /** * Sets "selection" property of {@link Button}. */ public final void setSelection(PropertyTable propertyTable, Property property, boolean selected) { m_impl.setSelection(propertyTable, property, selected); } //////////////////////////////////////////////////////////////////////////// // // PropertyEditorPresentation // //////////////////////////////////////////////////////////////////////////// @Override public final int show(final PropertyTable propertyTable, final Property property, final int x, final int y, final int width, final int height) { return m_impl.show(propertyTable, property, x, y, width, height); } @Override public final void hide(PropertyTable propertyTable, Property property) { m_impl.hide(propertyTable, property); } //////////////////////////////////////////////////////////////////////////// // // Access // //////////////////////////////////////////////////////////////////////////// final int getStyle() { return m_style; } //////////////////////////////////////////////////////////////////////////// // // Implementation // //////////////////////////////////////////////////////////////////////////// /** * @return the {@link Image} to display on {@link Button}. */ protected Image getImage() { return DesignerPlugin.getImage("properties/dots.gif"); } /** * @return the tooltip text to display for {@link Button}. */ protected String getTooltip() { return null; } /** * Handles click on {@link Button}. */ protected abstract void onClick(PropertyTable propertyTable, Property property) throws Exception; }