Initial commit from SVN.

This commit is contained in:
wcrisman
2014-05-30 10:31:51 -07:00
commit b45e56b890
1968 changed files with 370949 additions and 0 deletions

View File

@@ -0,0 +1,280 @@
/*
* Copyright (c) 2006,2009 Declarative Engineering LLC.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Declarative Engineering LLC
* verson 1 which accompanies this distribution, and is available at
* http://declarativeengineering.com/legal/DE_Developer_License_v1.txt
*/
package com.foundation.tcv.swt.client;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.ExpandItem;
import com.common.util.IList;
import com.common.util.LiteHashMap;
import com.common.util.LiteList;
import com.foundation.tcv.swt.IExpandBar;
import com.foundation.tcv.view.ViewMessage;
public class ExpandBar extends Container implements IExpandBar, Component.IComponentListener, ControlListener {
/** A mapping of ExpandItem instances indexed by the Component displayed by the item. */
private LiteHashMap expandItemsByComponentMap = new LiteHashMap(15);
/** A collection of Component instances which require initialization. */
private IList pendingItems = new LiteList(10, 50);
/**
* ExpandBar constructor.
*/
public ExpandBar() {
super();
}//ExpandBar()//
/**
* Gets the SWT expand bar that represents this expand bar.
* @return The SWT expand bar providing visualization for this expand bar.
*/
public org.eclipse.swt.widgets.ExpandBar getSwtExpandBar() {
return (org.eclipse.swt.widgets.ExpandBar) getSwtWidget();
}//getSwtExpandBar()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.AbstractComponent#internalViewInitialize()
*/
protected void internalViewInitialize() {
//Complete the initialization of the component items since the components should have set themselves up by now.//
for(int index = 0; index < pendingItems.getSize(); index++) {
internalAddItem((Component) pendingItems.get(index), -1);
}//for//
super.internalViewInitialize();
}//internalViewInitialize()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.AbstractComponent#internalViewRelease()
*/
protected void internalViewRelease() {
super.internalViewRelease();
}//internalViewRelease()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.AbstractComponent#internalViewSynchronize()
*/
protected void internalViewSynchronize() {
super.internalViewSynchronize();
}//internalViewSynchronize()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.AbstractComponent#internalProcessMessage(com.foundation.tcv.model.ViewMessage)
*/
public Object internalProcessMessage(ViewMessage viewMessage) {
Object result = null;
switch(viewMessage.getMessageNumber()) {
case MESSAGE_INITIALIZE: {
if(getSwtControl() == null) {
int[] data = (int[]) viewMessage.getMessageData();
int style = data[1];
//Link to the parent container.//
setContainer((Container) getComponent(data[0]));
getContainer().addComponent(this);
//Create the SWT widget.//
setSwtWidget(new org.eclipse.swt.widgets.ExpandBar(getContainer().getSwtParent(), style));
getSwtWidget().setData(this);
//If the container has already been initialized then force the parent to re-layout so that this component will appear.//
if(getContainer().isInitialized()) {
getContainer().getSwtComposite().layout(true, true);
}//if//
}//if//
break;
}//case//
case MESSAGE_ADD_ITEM: {
int componentNumber = viewMessage.getMessageInteger();
Component component = (Component) getComponent(componentNumber);
int index = viewMessage.getMessageSecondaryInteger();
if(isInitialized()) {
internalAddItem(component, index);
}//if//
else {
if(index != -1) {
pendingItems.add(index, component);
}//if//
else {
pendingItems.add(component);
}//else//
}//else//
break;
}//case//
case MESSAGE_REMOVE_ITEM: {
int componentNumber = ((Integer) viewMessage.getMessageData()).intValue();
Component component = (Component) getComponent(componentNumber);
if(component != null) {
ExpandItem expandItem = (ExpandItem) expandItemsByComponentMap.remove(component);
if(expandItem != null && !expandItem.isDisposed()) {
//Note: Don't dispose of the image because it comes from the component's container-image property whose lifecycle is managed by the component.//
expandItem.dispose();
}//if//
component.unregisterListener(this);
}//if//
break;
}//case//
case MESSAGE_REPOSITION_ITEM: {
int componentNumber = ((int[]) viewMessage.getMessageData())[0];
int newIndex = ((int[]) viewMessage.getMessageData())[1];
Component component = (Component) getComponent(componentNumber);
if(component != null) {
ExpandItem oldExpandItem = (ExpandItem) expandItemsByComponentMap.remove(component);
if(oldExpandItem != null && !oldExpandItem.isDisposed()) {
ExpandItem newExpandItem = new ExpandItem(getSwtExpandBar(), 0, newIndex);
newExpandItem.setText(oldExpandItem.getText());
newExpandItem.setImage(oldExpandItem.getImage());
//SWT does not yet support tool tip text for expand items.//
//newExpandItem.setToolTipText(oldExpandItem.getToolTipText());
newExpandItem.setData(oldExpandItem.getData());
newExpandItem.setControl(oldExpandItem.getControl());
oldExpandItem.dispose();
expandItemsByComponentMap.put(component, newExpandItem);
}//if//
}//if//
break;
}//case//
case MESSAGE_SORT_ITEMS: {
int startIndex = ((Integer) ((Object[]) viewMessage.getMessageData())[0]).intValue();
int[] mapping = (int[]) ((Object[]) viewMessage.getMessageData())[1];
ExpandItem[] oldExpandItems = new ExpandItem[mapping.length];
int nextIndex = startIndex;
//Reorder the item items by adding new item items before the old ones.//
for(int index = 0; index < mapping.length; index++) {
int oldIndex = nextIndex + index + mapping[index];
ExpandItem oldExpandItem = getSwtExpandBar().getItem(oldIndex);
ExpandItem expandItem = new org.eclipse.swt.widgets.ExpandItem(getSwtExpandBar(), 0, index);
Component component = (Component) oldExpandItem.getData();
expandItem.setText(oldExpandItem.getText());
expandItem.setImage(oldExpandItem.getImage());
//SWT does not yet support tool tip text for expand items.//
//expandItem.setToolTipText(oldExpandItem.getToolTipText());
expandItem.setControl(oldExpandItem.getControl());
expandItem.setData(oldExpandItem.getData());
oldExpandItems[index] = oldExpandItem;
expandItemsByComponentMap.put(component, expandItem);
nextIndex++;
}//for//
//Remove the old item items.//
for(int index = 0; index < oldExpandItems.length; index++) {
oldExpandItems[index].dispose();
}//for//
break;
}//case//
case MESSAGE_SET_SPACING: {
Integer spacing = (Integer) viewMessage.getMessageData();
if(spacing != null) {
getSwtExpandBar().setSpacing(spacing.intValue());
}//if//
resize();
break;
}//case//
default: {
result = super.internalProcessMessage(viewMessage);
}//default//
}//switch//
return result;
}//internalProcessMessage()//
/**
* Adds an item to the expand bar.
* @param component The component which will be placed as an expandable item.
* @param index The index of the expand bar item within the expand bar item set. A value of -1 indicates a new expand bar should be created at the end.
*/
protected void internalAddItem(Component component, int index) {
String title = component.getContainerTitle();
Image image = component.getContainerImage();
//SWT does not yet support tool tip text for expand items.//
//String toolTipText = component.getToolTipText();
ExpandItem expandItem = null;
if(index != -1) {
expandItem = new ExpandItem(getSwtExpandBar(), 0, index);
}//if//
else {
expandItem = new ExpandItem(getSwtExpandBar(), 0);
}//else//
expandItem.setText(title == null ? "" : title);
expandItem.setImage(image);
//SWT does not yet support tool tip text for expand items.//
//expandItem.setToolTipText(toolTipText);
expandItem.setData(component);
expandItem.setControl(component.getSwtControl());
expandItemsByComponentMap.put(component, expandItem);
component.registerListener(this);
component.getSwtControl().addControlListener(this);
}//internalAddItem()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.Component.IComponentListener#toolTipTextChanged(com.foundation.tcv.swt.client.Component, java.lang.String)
*/
public void toolTipTextChanged(Component component, String newToolTipText) {
ExpandItem expandItem = (ExpandItem) expandItemsByComponentMap.get(component);
if(expandItem != null && !expandItem.isDisposed()) {
//SWT does not yet support tool tip text for expand items.//
//expandItem.setToolTipText(newToolTipText);
}//if//
}//toolTipTextChanged()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.Component.IComponentListener#imageChanged(com.foundation.tcv.swt.client.Component, org.eclipse.swt.graphics.Image)
*/
public void imageChanged(Component container, Image image) {
ExpandItem expandItem = (ExpandItem) expandItemsByComponentMap.get(container);
if(expandItem != null && !expandItem.isDisposed()) {
expandItem.setImage(image);
}//if//
}//imageChanged()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.Component.IComponentListener#titleChanged(com.foundation.tcv.swt.client.Component, java.lang.String)
*/
public void titleChanged(Component container, String newTitle) {
ExpandItem expandItem = (ExpandItem) expandItemsByComponentMap.get(container);
if(expandItem != null && !expandItem.isDisposed()) {
expandItem.setText(newTitle);
}//if//
}//titleChanged()//
/* (non-Javadoc)
* @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
*/
public void controlMoved(ControlEvent e) {
}//controlMoved()//
/* (non-Javadoc)
* @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
*/
public void controlResized(ControlEvent e) {
//TODO: Is this the right place for this?
((ExpandItem) expandItemsByComponentMap.get(e.widget.getData())).setHeight(((Control) e.widget).computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
}//controlResized()//
/* (non-Javadoc)
* @see com.foundation.tcv.swt.client.Container#internalLayout()
*/
protected void internalLayout() {
ExpandItem[] items = getSwtExpandBar().getItems();
//TODO: Is this the right place for this?
//Set the height of all the expand items.//
for(int index = 0; index < items.length; index++) {
items[index].setHeight(items[index].getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
}//for//
super.internalLayout();
}//internalLayout()//
}//ExpandBar//