/*******************************************************************************
* Copyright (c) 2012, 2016, 2017 PDT Extension Group and others.
* 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:
* PDT Extension Group - initial API and implementation
* Kaloyan Raev - [501269] externalize strings
*******************************************************************************/
/**
*
*/
package org.eclipse.php.composer.ui.editor.composer;
import org.eclipse.osgi.util.NLS;
import org.eclipse.php.composer.ui.ComposerUIPluginImages;
import org.eclipse.php.composer.ui.editor.ComposerFormPage;
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.*;
/**
* @author Thomas Gossmann
*
*/
public class OverviewPage extends ComposerFormPage {
public final static String ID = "org.eclipse.php.composer.ui.editor.composer.OverviewPage"; //$NON-NLS-1$
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(":"); //$NON-NLS-1$
String type = chunks[0];
String target = chunks[1];
if (type.equals("page")) { //$NON-NLS-1$
editor.setActivePage(target);
} else if (type.equals("view")) { //$NON-NLS-1$
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(Messages.OverviewPage_Title);
}
}
@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(Messages.OverviewPage_ConfigurationSectionTitle);
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(NLS.bind(Messages.OverviewPage_ConfigurationSectionBody, AutoloadPage.ID, ConfigurationPage.ID),
true, false);
config.setImage("page", ComposerUIPluginImages.PAGE.createImage()); //$NON-NLS-1$
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(Messages.OverviewPage_DependenciesSectionTitle);
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(
NLS.bind(Messages.OverviewPage_DependenciesSectionBody, DependenciesPage.ID, DependencyGraphPage.ID),
true, false);
dependencies.setImage("page", ComposerUIPluginImages.PAGE.createImage()); //$NON-NLS-1$
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(Messages.OverviewPage_ComposerInfoSectionTitle);
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(Messages.OverviewPage_ComposerInfoSectionBody, true, false);
composer.setImage("url", ComposerUIPluginImages.BROWSER.createImage()); //$NON-NLS-1$
composer.addHyperlinkListener(new HyperlinkAdapter() {
public void linkActivated(HyperlinkEvent e) {
Program.launch(e.getHref().toString());
}
});
}
}