// 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.IAssignment;
import org.eclipse.rap.rms.data.IProject;
import org.eclipse.rap.rms.data.ITask;
import org.eclipse.rap.rms.ui.internal.Activator;
import org.eclipse.rap.rms.ui.internal.RMSMessages;
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 ProjectAdapter implements IEntityAdapter {
public Object[] getElements( final Object parent ) {
return ( ( IProject )parent ).getAssignments().toArray();
}
public Object getParent( final Object child ) {
return ( ( IProject )child ).getPrincipal();
}
public Object[] getChildren( final Object parent ) {
return getElements( parent );
}
public boolean hasChildren( final Object parent ) {
// return ( ( IProject )parent ).getAssignments().size() > 0;
return false;
}
public Image getImage( final Object element ) {
return getEditorImage( element ).createImage();
}
public String getText( final Object element ) {
return ( ( IProject )element ).getName();
}
public String getEditorName( final Object element ) {
return getText( element );
}
public ImageDescriptor getEditorImage( final Object element ) {
Image image = Activator.getDefault().getImage( Activator.IMG_PROJECT );
return ImageDescriptor.createFromImage( image );
}
public void createNewMenu( final Object element,
final IMenuManager menuManager )
{
// EntityImage assignment = EntityImage.ASSIGNMENT;
// NewAction newAssignment
// = new NewAction( ( IEntity )element,
// IAssignment.class,
// "New Assignment",
// EntityAdapter.getImageDescriptor( assignment ) );
// menuManager.add( newAssignment );
}
@SuppressWarnings("unchecked") //$NON-NLS-1$
public IWizardPage createWizardPage( final Object element,
final Class destinationType )
{
IWizardPage result = null;
if( destinationType == IAssignment.class ) {
result = new NewAssignmentWizardPage( ( IProject )element );
} else if( destinationType == ITask.class ) {
result = new NewTaskWizardPage( ( IProject )element );
}
return result;
}
@SuppressWarnings("unchecked") //$NON-NLS-1$
public String createWizardTitle( final Class destinationType ) {
return RMSMessages.get().ProjectAdapter_CreateAssignment;
}
public void refreshAssociations( final Object element,
final StructuredViewer viewer )
{
IProject project = ( IProject )element;
viewer.refresh( project.getPrincipal() );
}
public IPropertySource getPropertySource( final Object element ) {
return new IPropertySource() {
private final static String ID_NAME = "Name"; //$NON-NLS-1$
private final static String ID_DESCRIPTION = "Description"; //$NON-NLS-1$
private final static String ID_START_DATE = "Start Date"; //$NON-NLS-1$
private final static String ID_END_DATE = "End Date"; //$NON-NLS-1$
private final IProject project = ( IProject )element;
public Object getEditableValue() {
return null;
}
public IPropertyDescriptor[] getPropertyDescriptors() {
return new IPropertyDescriptor[] {
new PropertyDescriptor( ID_NAME, RMSMessages.get().ProjectAdapter_Name ),
new PropertyDescriptor( ID_DESCRIPTION, RMSMessages.get().ProjectAdapter_Description ),
new PropertyDescriptor( ID_START_DATE, RMSMessages.get().ProjectAdapter_StartDate ),
new PropertyDescriptor( ID_END_DATE, RMSMessages.get().ProjectAdapter_EndDate )
};
}
public Object getPropertyValue( final Object id ) {
Object result = null;
if( ID_NAME == id ) {
result = project.getName();
}
if( ID_DESCRIPTION == id ) {
result = project.getDescription();
}
if( ID_START_DATE == id ) {
result = project.getStartDate();
}
if( ID_END_DATE == id ) {
result = project.getEndDate();
}
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 )
{
ProjectCopy project = new ProjectCopy( ( IProject )element );
return new FormPage[] {
new ProjectOverviewPage( editor, project ),
new ProjectTasksPage( editor, project ),
new ProjectGanttPage( editor, project )
};
}
}