blob: a7397eb47dfec1e585d7b8ee405ba78404b2a94e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, 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:
* xored software, Inc. - initial API and Implementation (Yuri Strot)
*******************************************************************************/
package org.eclipse.tigerstripe.workbench.ui.internal.editors.descriptor.dependencies;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
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.swt.widgets.Text;
import org.eclipse.tigerstripe.workbench.TigerstripeException;
import org.eclipse.tigerstripe.workbench.internal.core.project.ModelReference;
import org.eclipse.tigerstripe.workbench.project.IProjectDetails;
import org.eclipse.tigerstripe.workbench.project.ITigerstripeModelProject;
import org.eclipse.tigerstripe.workbench.ui.EclipsePlugin;
import org.eclipse.tigerstripe.workbench.ui.components.md.Details;
import org.eclipse.tigerstripe.workbench.ui.internal.utils.TigerstripeLayoutFactory;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
public class ReferenceDetails extends Details {
private final Composite externalContainer;
protected ModelReference reference;
private Text moduleId;
private Text projectDescription;
private Text projectName;
private Text projectVersion;
protected final FormToolkit toolkit;
public ReferenceDetails(FormToolkit toolkit, Composite externalContainer) {
this.toolkit = toolkit;
this.externalContainer = externalContainer;
}
@Override
protected void createContents(Composite parent) {
createFieldInfo(parent);
toolkit.paintBordersFor(parent);
}
private void createFieldInfo(Composite parent) {
Section section = TigerstripeLayoutFactory.createSection(parent,
toolkit, ExpandableComposite.TITLE_BAR | SWT.BORDER,
"Reference Details", null);
GridLayoutFactory.fillDefaults().applyTo(section);
GridDataFactory.fillDefaults().grab(true, true).applyTo(section);
Composite sectionClient = toolkit.createComposite(section, SWT.NONE);
GridLayoutFactory.fillDefaults().margins(3, 3).numColumns(2)
.applyTo(sectionClient);
GridDataFactory.fillDefaults().grab(true, true).applyTo(sectionClient);
Label label = toolkit.createLabel(sectionClient, "Module ID: ");
moduleId = toolkit.createText(sectionClient, "");
moduleId.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
moduleId.setEditable(false);
moduleId.setEnabled(false);
label = toolkit.createLabel(sectionClient, "Project Name: ");
projectName = toolkit.createText(sectionClient, "");
projectName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
projectName.setEditable(false);
projectName.setEnabled(false);
label = toolkit.createLabel(sectionClient, "Version: ");
projectVersion = toolkit.createText(sectionClient, "");
projectVersion.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
projectVersion.setEditable(false);
projectVersion.setEnabled(false);
insertExtraFields(sectionClient);
label = toolkit.createLabel(sectionClient, "Description: ");
label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
projectDescription = toolkit.createText(sectionClient, "", SWT.WRAP
| SWT.MULTI);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.minimumHeight = 100;
projectDescription.setLayoutData(gd);
projectDescription.setEditable(false);
projectDescription.setEnabled(false);
section.setClient(sectionClient);
toolkit.paintBordersFor(sectionClient);
}
protected void insertExtraFields(Composite sectionClient) {
// For subclasses to extend
}
@Override
protected Composite getExternalContainer() {
return externalContainer;
}
public void switchTarget(Object target) {
reference = (ModelReference) target;
updateForm();
}
protected void updateForm() {
if (reference == null) {
return;
}
String id = reference.getToModelId();
moduleId.setText((id != null) ? id : "<unknown>");
ITigerstripeModelProject resolvedModel = reference.getResolvedModel();
if (resolvedModel == null) {
return;
}
String name = resolvedModel.getName();
projectName.setText((name != null) ? name : "<unknown>");
try {
IProjectDetails details = resolvedModel.getProjectDetails();
String version = details.getVersion();
projectVersion.setText((version != null) ? version : "<unknown>");
String desc = details.getDescription();
projectDescription.setText((desc != null) ? desc : "<unknown>");
} catch (TigerstripeException e) {
final String errMsg = "Error while getting the data";
projectVersion.setText(errMsg);
projectDescription.setText(errMsg);
EclipsePlugin.log(e);
}
}
}