summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java224
1 files changed, 0 insertions, 224 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java
deleted file mode 100644
index 209bf39..0000000
--- a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/presentation/ButtonPropertyEditorPresentationImpl.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * 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 com.google.common.collect.Maps;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.wb.internal.core.model.property.Property;
-import org.eclipse.wb.internal.core.model.property.table.PropertyTable;
-import org.eclipse.wb.internal.core.utils.Pair;
-
-import java.util.Map;
-
-/**
- * Internal implementation of {@link PropertyEditorPresentation} for displaying {@link Button}.
- *
- * @author scheglov_ke
- * @author mitin_aa
- * @coverage core.model.property.editor
- */
-class ButtonPropertyEditorPresentationImpl extends PropertyEditorPresentation {
- protected final PropertyToControlMap m_propertyToControl = new PropertyToControlMap();
- private final ButtonPropertyEditorPresentation m_presentation;
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Constructor
- //
- ////////////////////////////////////////////////////////////////////////////
- public ButtonPropertyEditorPresentationImpl(ButtonPropertyEditorPresentation presentation) {
- m_presentation = presentation;
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // PropertyEditorPresentation
- //
- ////////////////////////////////////////////////////////////////////////////
- @Override
- public final void hide(PropertyTable propertyTable, Property property) {
- Control control = m_propertyToControl.remove(propertyTable, property);
- if (control != null) {
- control.dispose();
- }
- }
-
- @Override
- public final int show(PropertyTable propertyTable,
- Property property,
- int x,
- int y,
- int width,
- int height) {
- // prepare control
- Control control = m_propertyToControl.get(propertyTable, property);
- if (control == null) {
- control = createControl(propertyTable, property);
- }
- // set bounds
- final int controlWidth = height;
- final int controlX = x + width - controlWidth;
- setBounds(control, controlX, y, controlWidth, height);
- return controlWidth;
- }
-
- /**
- * Finds and select the appropriate {@link Control} belonging to given property.
- */
- public void setSelection(PropertyTable propertyTable, Property property, boolean selected) {
- Button button = (Button) m_propertyToControl.get(propertyTable, property);
- if (button != null) {
- button.setSelection(selected);
- }
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Control
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * Creates the control for given property and initializes newly created control.
- */
- private Control createControl(final PropertyTable propertyTable, final Property property) {
- Control control = createControlImpl(propertyTable, property);
- m_propertyToControl.put(propertyTable, property, control);
- // when Control disposed, remove Control/Property from map to avoid memory leak
- control.addListener(SWT.Dispose, new Listener() {
- @Override
- public void handleEvent(Event e) {
- m_propertyToControl.remove(propertyTable, property);
- }
- });
- // activate property on mouse down
- control.addListener(SWT.MouseDown, new Listener() {
- @Override
- public void handleEvent(Event event) {
- propertyTable.deactivateEditor(true);
- propertyTable.setActiveProperty(property);
- }
- });
- // return focus on propertyTable after click
- control.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- propertyTable.forceFocus();
- }
- });
- // handle selection
- control.addListener(SWT.Selection, new Listener() {
- @Override
- public void handleEvent(Event event) {
- try {
- getPresentation().onClick(propertyTable, property);
- } catch (Throwable e) {
- propertyTable.deactivateEditor(false);
- propertyTable.handleException(e);
- }
- }
- });
- return control;
- }
-
- /**
- * Creates the {@link Control} instance. By default, {@link Button} instance created.
- */
- protected Control createControlImpl(final PropertyTable propertyTable, final Property property) {
- Button button = new Button(propertyTable, getPresentation().getStyle());
- button.setImage(getPresentation().getImage());
- button.setToolTipText(getPresentation().getTooltip());
- return button;
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Access
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * @return the 'parent' presentation. Internal usage only.
- */
- protected final ButtonPropertyEditorPresentation getPresentation() {
- return m_presentation;
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Utils
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * Sets new bounds for {@link Control}, optimizing when possible.
- */
- private static void setBounds(Control control, int newX, int newY, int newWidth, int newHeight) {
- // check, may be Control is invisible, so no reason to change bounds
- {
- // is in negative zone
- if (newY + newHeight < 0) {
- control.setVisible(false);
- return;
- }
- // is out of client area height
- Rectangle parentArea = control.getParent().getClientArea();
- if (newY > parentArea.height) {
- control.setVisible(false);
- return;
- }
- }
- // well, now we sure that Control is visible
- if (!control.getVisible()) {
- control.setVisible(true);
- }
- // prepare old size, remember new
- Integer oldWidthObject = (Integer) control.getData("oldWidth");
- Integer oldHeightObject = (Integer) control.getData("oldHeight");
- control.setData("oldWidth", newWidth);
- control.setData("oldHeight", newHeight);
- // check, may be same size
- if (oldWidthObject != null) {
- int oldWidth = oldWidthObject.intValue();
- int oldHeight = oldHeightObject.intValue();
- if (oldWidth == newWidth && oldHeight == newHeight) {
- control.setLocation(newX, newY);
- return;
- }
- }
- // no any optimization possible, just set bounds
- control.setBounds(newX, newY, newWidth, newHeight);
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Controls map
- //
- ////////////////////////////////////////////////////////////////////////////
- protected static final class PropertyToControlMap {
- private final Map<Pair<PropertyTable, Property>, Control> m_map = Maps.newHashMap();
-
- void put(PropertyTable propertyTable, Property property, Control control) {
- m_map.put(Pair.create(propertyTable, property), control);
- }
-
- Control remove(PropertyTable propertyTable, Property property) {
- return m_map.remove(Pair.create(propertyTable, property));
- }
-
- Control get(PropertyTable propertyTable, Property property) {
- return m_map.get(Pair.create(propertyTable, property));
- }
- }
-}