/******************************************************************************* * Copyright (c) 2011 Wind River Systems, Inc. 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: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.ui.forms.parts; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.PlatformObject; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.tcf.te.ui.swt.SWTControlUtil; import org.eclipse.ui.forms.widgets.FormToolkit; /** * Abstract part implementation. */ public abstract class AbstractPart extends PlatformObject { // The parts enabled state private boolean enabled = true; /** * Constructor. */ public AbstractPart() { super(); } /** * Sets the parts enabled state and call {@link #onEnabledStateChanged()} * if the enabled state changed. * * @param enabled The new enabled state. */ public void setEnabled(boolean enabled) { if (this.enabled != enabled) { this.enabled = enabled; onEnabledStateChanged(); } } /** * Called from {@link #setEnabled(boolean)} if the enabled * state changed. */ protected void onEnabledStateChanged() { } /** * Returns the parts enabled state. * * @return The enabled state. */ public boolean isEnabled() { return enabled; } /** * Creates the part control(s). * * @param parent The parent composite. Must not be <code>null</code>. * @param style The control style if applicable. * @param span The horizontal span if applicable. * @param toolkit The form toolkit or <code>null</code>. */ public abstract void createControl(Composite parent, int style, int span, FormToolkit toolkit); /** * Convenience method to create a composite. * * @param parent The parent composite. Must not be <code>null</code>. * @param toolkit The form toolkit or <code>null</code>. * * @return The new composite. */ protected Composite createComposite(Composite parent, FormToolkit toolkit) { Assert.isNotNull(parent); return toolkit != null ? toolkit.createComposite(parent) : new Composite(parent, SWT.NONE); } /** * Convenience method to create a "invisible" label for creating an * empty space between controls. * * @param parent The parent composite. Must not be <code>null</code>. * @param span The horizontal span. * @param toolkit The form toolkit or <code>null</code>. * * @return */ protected Label createEmptySpace(Composite parent, int span, FormToolkit toolkit) { Assert.isNotNull(parent); Label emptySpace = toolkit != null ? toolkit.createLabel(parent, null) : new Label(parent, SWT.NONE); GridData layoutData = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false); layoutData.horizontalSpan = span; layoutData.widthHint = 0; layoutData.heightHint = SWTControlUtil.convertHeightInCharsToPixels(emptySpace, 1); emptySpace.setLayoutData(layoutData); return emptySpace; } }