// Created on 14.09.2007
package org.eclipse.rap.rms.ui.internal.datamodel;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.rap.rms.data.IDataModel;
import org.eclipse.rap.rms.data.IEntity;
import org.eclipse.rap.rms.data.IPrincipal;
import org.eclipse.rap.rms.ui.internal.Activator;
import org.eclipse.rap.rms.ui.internal.RMSMessages;
import org.eclipse.rap.rms.ui.internal.actions.NewAction;
import org.eclipse.rap.rms.ui.internal.datamodel.EntityAdapter.IEntityAdapter;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.PropertyDescriptor;
final class DataModelAdapter implements IEntityAdapter {
private static final String REPOSITORY = "Repository"; //$NON-NLS-1$
public Object[] getElements( final Object parent ) {
// List<IPrincipal> principals = ( ( IDataModel )parent ).getPrincipals();
// List<IEmployee> employees = ( ( IDataModel )parent ).getEmployees();
// List<IEntity> result = new ArrayList<IEntity>();
// result.addAll( principals );
// result.addAll( employees );
// return result.toArray();
return ( ( IDataModel )parent ).getPrincipals().toArray();
}
public Object getParent( final Object child ) {
return null;
}
public Object[] getChildren( final Object parent ) {
return getElements( parent );
}
public boolean hasChildren( final Object parent ) {
return getElements( parent ).length > 0;
}
public Image getImage( final Object element ) {
return getEditorImage( element ).createImage();
}
public String getText( final Object element ) {
return REPOSITORY;
}
public String getEditorName( final Object element ) {
return REPOSITORY;
}
public ImageDescriptor getEditorImage( final Object element ) {
Image image = Activator.getDefault().getImage( Activator.IMG_REPOSITORY );
return ImageDescriptor.createFromImage( image );
}
public void createNewMenu( final Object element,
final IMenuManager menuManager )
{
// MenuManager newMenu = new MenuManager( "New" );
// NewAction newPrincipal
// = new NewAction( ( IEntity )element,
// IPrincipal.class,
// "Principal",
// EntityAdapter.getImageDescriptor( EntityImage.PRINCIPAL ) );
// newMenu.add( newPrincipal );
// NewAction newEmployee
// = new NewAction( ( IEntity )element,
// IEmployee.class,
// "Employee",
// EntityAdapter.getImageDescriptor( EntityImage.EMPLOYEE ) );
// newMenu.add( newEmployee );
// menuManager.add( newMenu );
NewAction newPrincipal
= new NewAction( ( IEntity )element,
IPrincipal.class,
RMSMessages.get().DataModelAdapter_NewPrincipal,
getEditorImage( element ) );
menuManager.add( newPrincipal );
}
@SuppressWarnings("unchecked") //$NON-NLS-1$
public IWizardPage createWizardPage( final Object element,
final Class destinationType )
{
IWizardPage result;
if( destinationType == IPrincipal.class ) {
result = new NewPrincipalWizardPage();
} else {
result = new NewEmployeeWizardPage();
}
return result;
}
@SuppressWarnings("unchecked") //$NON-NLS-1$
public String createWizardTitle( final Class destinationType ) {
String result;
if( destinationType == IPrincipal.class ) {
result = RMSMessages.get().DataModelAdapter_CreatePrincipal;
} else {
result = RMSMessages.get().DataModelAdapter_CreateUser;
}
return result;
}
public void refreshAssociations( final Object element,
final StructuredViewer viewer )
{
}
public IPropertySource getPropertySource( final Object element ) {
return new IPropertySource() {
private final static String ID_PRINCIPALS = "Principals"; //$NON-NLS-1$
private final static String ID_EMPLOYEES = "Employees"; //$NON-NLS-1$
private final IDataModel dataModel = ( IDataModel )element;
public Object getEditableValue() {
return null;
}
public IPropertyDescriptor[] getPropertyDescriptors() {
return new IPropertyDescriptor[] {
new PropertyDescriptor( ID_PRINCIPALS, RMSMessages.get().DataModelAdapter_Principals ),
new PropertyDescriptor( ID_EMPLOYEES, RMSMessages.get().DataModelAdapter_Employees )
};
}
public Object getPropertyValue( final Object id ) {
Object result = null;
if( ID_PRINCIPALS == id ) {
result = new Integer( dataModel.getPrincipals().size() );
} else if( ID_EMPLOYEES == id ) {
result = new Integer( dataModel.getEmployees().size() );
}
return result;
}
public boolean isPropertySet( final Object id ) {
return false;
}
public void resetPropertyValue( final Object id ) {
}
public void setPropertyValue( final Object id, final Object value ) {
}
};
}
public FormPage[] getEditorPages( final Object element,
final FormEditor editor )
{
return null;
}
}