package de.urszeidler.shr5.ecp.preferences; import java.util.Collection; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; import org.eclipse.jface.preference.FileFieldEditor; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.wb.swt.FieldLayoutPreferencePage; import de.urszeidler.eclipse.shr5.Shr5Package; import de.urszeidler.eclipse.shr5.SourceBook; import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil; import de.urszeidler.shr5.ecp.Activator; import de.urszeidler.shr5.ecp.util.ShadowrunEditingTools; public class SourcebookViewerPreferences extends FieldLayoutPreferencePage implements IWorkbenchPreferencePage { /** * Create the preference page. */ public SourcebookViewerPreferences() { setTitle("Link source"); setDescription("Linke the source books with the pdf."); setMessage("Link the source books."); setPreferenceStore(Activator.getDefault().getPreferenceStore()); } /** * Initialize the preference page. */ public void init(IWorkbench workbench) { // Initialize the preference page } /** * Create contents of the preference page. * * @param parent */ @Override public Control createPageContents(Composite parent) { Composite container = new Composite(parent, SWT.NULL); GridLayout gl_container = new GridLayout(); gl_container.numColumns = 2; container.setLayout(gl_container); Group grpSourceBooks = new Group(container, SWT.NONE); grpSourceBooks.setLayout(new GridLayout(2, false)); grpSourceBooks.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); grpSourceBooks.setText("Source books"); Object root = Activator.getDefault().getEdtingDomain().getResourceSet().getResources().get(0).getAllContents().next(); Collection<EObject> collection = ItemPropertyDescriptor.getReachableObjectsOfType((EObject)root, Shr5Package.Literals.SOURCE_BOOK); // Create the field editors for (EObject eObject : collection) { if (eObject instanceof SourceBook) { SourceBook sb = (SourceBook)eObject; Composite composite = new Composite(grpSourceBooks, SWT.NONE); composite.setLayout(new GridLayout(4, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); addField(new FileFieldEditor(PreferenceConstants.LINKED_SOURCEBOOKS + ShadowrunEditingTools.getId(sb), AdapterFactoryUtil .getInstance().getLabelProvider().getText(sb), composite)); Composite composite_1 = new Composite(grpSourceBooks, SWT.NONE); composite_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); addField(new IntegerFieldEditor(PreferenceConstants.LINKED_SOURCEBOOKS_OFFSET + ShadowrunEditingTools.getId(sb), " offset", composite_1)); } } return container; } }