/*****************************************************************************
* Copyright (c) 2006, 2007 g-Eclipse Consortium
* 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
*
* Initial development of the original code was made for the
* g-Eclipse project founded by European Union
* project number: FP6-IST-034327 http://www.geclipse.eu/
*
* Contributors:
* Mathias Stuempert - initial API and implementation
*****************************************************************************/
package eu.geclipse.ui.internal.preference;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import eu.geclipse.ui.internal.Activator;
/**
* This class represents a preference page that is contributed to the
* PreferenceConstants dialog. By subclassing <samp>FieldEditorPreferencePage</samp>,
* we can use the field support built into JFace that allows us to create a page
* that is small and knows how to save, restore and apply itself.
* <p>
* This page is used to modify preferences only. They are stored in the
* preference store that belongs to the main plug-in class. That way,
* preferences can be accessed directly via the preference store.
*/
public class GEclipsePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
/**
* Construct a new <code>GEclipsePreferencePage</code>.
*/
public GEclipsePreferencePage() {
super();
setPreferenceStore( Activator.getDefault().getPreferenceStore() );
// setDescription("A demonstration of a preference page implementation");
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createContents( final Composite parent ) {
initializeDialogUnits( parent );
noDefaultAndApplyButton();
Display display = Display.getCurrent();
GridData gData;
GridLayout layout;
layout = new GridLayout( 2, false );
layout.marginHeight = 0;
layout.marginWidth = 0;
parent.setLayout( layout );
Composite imgComp = new Composite( parent, SWT.NONE );
layout = new GridLayout( 1, false );
layout.marginTop = 8;
layout.marginLeft = 0;
layout.marginRight = 0;
imgComp.setLayout( layout );
imgComp.setBackground( new Color( display, 255, 255, 255 ) );
gData = new GridData( GridData.FILL_VERTICAL );
gData.grabExcessVerticalSpace = true;
imgComp.setLayoutData( gData );
ImageRegistry imgReg = Activator.getDefault().getImageRegistry();
Image logo = imgReg.get( "geclipse_logo_prefs" ); //$NON-NLS-1$
Label logoLabel = new Label( imgComp, SWT.TOP );
logoLabel.setImage( logo );
logoLabel.setBackground( new Color( display, 255, 255, 255 ) );
gData = new GridData();
gData.horizontalAlignment = GridData.CENTER;
gData.verticalAlignment = GridData.BEGINNING;
logoLabel.setLayoutData( gData );
Composite infoComp = new Composite( parent, SWT.NONE );
gData = new GridData( GridData.FILL_BOTH );
gData.grabExcessHorizontalSpace = true;
gData.grabExcessVerticalSpace = true;
infoComp.setLayoutData( gData );
layout = new GridLayout( 1, false );
infoComp.setLayout( layout );
Label infoLabel1 = new Label( infoComp, SWT.LEFT );
infoLabel1.setText( "These are the preferences for the g-Eclipse plugin" ); //$NON-NLS-1$
infoLabel1.setFont( new Font( display, "Arial", 10, SWT.BOLD ) ); //$NON-NLS-1$
gData = new GridData();
gData.verticalAlignment = GridData.BEGINNING;
gData.verticalIndent = 24;
infoLabel1.setLayoutData( gData );
Label infoLabel2 = new Label( infoComp, SWT.LEFT );
infoLabel2.setText( "To change specific preferences of g-Eclipse\nchoose from the tree on the left." ); //$NON-NLS-1$
gData = new GridData( GridData.FILL_VERTICAL );
gData.verticalAlignment = GridData.BEGINNING;
gData.verticalIndent = 12;
gData.grabExcessVerticalSpace = true;
infoLabel2.setLayoutData( gData );
Link geclLink = new Link( infoComp, SWT.LEFT );
geclLink.setText( "Find us at <a href=\"http://www.geclipse.eu\">www.geclipse.eu</a>." ); //$NON-NLS-1$
gData = new GridData();
gData.verticalAlignment = GridData.END;
gData.verticalIndent = 12;
geclLink.setLayoutData( gData );
geclLink.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent e ) {
String href = e.text;
Program.launch( href );
}
} );
return parent;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init( final IWorkbench workbench ) {
// Nothing to do here
}
}