/**
*
*/
package com.dubture.composer.ui.editor.composer;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.FormText;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
import com.dubture.composer.ui.ComposerUIPluginImages;
import com.dubture.composer.ui.editor.ComposerFormPage;
/**
* @author Thomas Gossmann
*
*/
public class OverviewPage extends ComposerFormPage {
public final static String ID = "com.dubture.composer.ui.editor.composer.OverviewPage";
protected ComposerFormEditor editor;
private Composite left;
private Composite right;
private GeneralSection generalSection;
private AuthorSection authorSection;
private SupportSection supportSection;
protected IHyperlinkListener linkListener = new HyperlinkAdapter() {
public void linkActivated(HyperlinkEvent event) {
String[] chunks = event.getHref().toString().split(":");
String type = chunks[0];
String target = chunks[1];
if (type.equals("page")) {
editor.setActivePage(target);
} else if (type.equals("view")) {
editor.setActivePage(target);
}
}
};
/**
* @param editor
* @param id
* @param title
*/
public OverviewPage(ComposerFormEditor editor, String id, String title) {
super(editor, id, title);
this.editor = editor;
}
@Override
public void setActive(boolean active) {
super.setActive(active);
if (active) {
editor.getHeaderForm().getForm().setText("Overview");
}
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
generalSection.setEnabled(enabled);
authorSection.setEnabled(enabled);
supportSection.setEnabled(enabled);
}
@Override
protected void createFormContent(IManagedForm managedForm) {
ScrolledForm form = managedForm.getForm();
FormToolkit toolkit = managedForm.getToolkit();
TableWrapLayout layout = new TableWrapLayout();
layout.makeColumnsEqualWidth = true;
layout.numColumns = 2;
form.getBody().setLayout(layout);
left = toolkit.createComposite(form.getBody());
left.setLayout(new TableWrapLayout());
left.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
generalSection = new GeneralSection(this, left);
authorSection = new AuthorSection(this, left);
supportSection = new SupportSection(this, left);
right = toolkit.createComposite(form.getBody());
right.setLayout(new TableWrapLayout());
right.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
createConfigurationSection(right, toolkit);
createDependenciesSection(right, toolkit);
createComposerSection(right, toolkit);
}
private void createConfigurationSection(Composite parent, FormToolkit toolkit) {
Section section = toolkit.createSection(parent, Section.EXPANDED | Section.TITLE_BAR);
section.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
section.setText("Configuration");
Composite client = toolkit.createComposite(section);
section.setClient(client);
client.setLayout(new TableWrapLayout());
FormText config = toolkit.createFormText(client, false);
config.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
config.setText(
"<form>\n<p>Configure your package:" +
"</p>\n\n<li style=\"image\" value=\"page\"><a href=\"page:" +
AutoloadPage.ID + "\">Autoload</a>: manage psr-0, classmap and files " +
"this package may have.</li>\n<li style=\"image\" value=\"page\">" +
"<a href=\"page:" + ConfigurationPage.ID + "\">Configuration</a>: " +
"Configs, Scripts and Repositories can be set here.</li>\n</form>", true, false);
config.setImage("page", ComposerUIPluginImages.PAGE.createImage());
config.addHyperlinkListener(linkListener);
}
private void createDependenciesSection(Composite parent, FormToolkit toolkit) {
Section section = toolkit.createSection(parent, Section.EXPANDED | Section.TITLE_BAR);
section.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
section.setText("Dependencies");
Composite client = toolkit.createComposite(section);
section.setClient(client);
client.setLayout(new TableWrapLayout());
FormText dependencies = toolkit.createFormText(client, false);
dependencies.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
dependencies.setText(
"<form>\n<p>This packages dependencies are made up in two pages:" +
"</p>\n\n<li style=\"image\" value=\"page\"><a href=\"page:"+
DependenciesPage.ID+"\">Dependencies</a>: declares the dependencies " +
"this package may have.</li>\n<li style=\"image\" value=\"page\">" +
"<a href=\"view:"+ DependencyGraphPage.ID + "\">Dependency Graph</a>: " +
"shows the dependencies in a nice graph.</li>\n</form>", true, false);
dependencies.setImage("page", ComposerUIPluginImages.PAGE.createImage());
dependencies.addHyperlinkListener(linkListener);
}
private void createComposerSection(Composite parent, FormToolkit toolkit) {
Section section = toolkit.createSection(parent, Section.EXPANDED | Section.TITLE_BAR);
section.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
section.setText("Composer Information");
Composite client = toolkit.createComposite(section);
section.setClient(client);
client.setLayout(new TableWrapLayout());
FormText composer = toolkit.createFormText(client, false);
composer.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
composer.setText("<form>\n<p>Composer is a dependency manager for php.</p>\n\n<li " +
"style=\"image\" value=\"url\"><a href=\"http://getcomposer.org\">Composer</a>: " +
"Composer Homepage</li>\n<li style=\"image\" value=\"url\">" +
"<a href=\"http://getcomposer.org/doc/00-intro.md\">Getting Started</a> " +
"with Composer</li>\n<li style=\"image\" value=\"url\">" +
"<a href=\"http://getcomposer.org/doc/\">Documentation</a></li>\n" +
"<li style=\"image\" value=\"url\">" +
"<a href=\"http://getcomposer.org/doc/04-schema.md\">Schema Reference</a></li>\n" +
"<li style=\"image\" value=\"url\">" +
"<a href=\"http://github.com/composer/composer/issues\">Issues</a>: " +
"Report Issues</li>\n<li style=\"image\" value=\"url\">" +
"<a href=\"http://packagist.org\">Packagist</a>: " +
"Browse Packages</li>\n</form>", true, false);
composer.setImage("url", ComposerUIPluginImages.BROWSER.createImage());
composer.addHyperlinkListener(new HyperlinkAdapter() {
public void linkActivated(HyperlinkEvent e) {
Program.launch(e.getHref().toString());
}
});
}
}