/******************************************************************************* * Copyright (c) 2009, 2016 Red Hat, 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: * Red Hat - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.rpm.ui.editor.forms; import org.eclipse.linuxtools.internal.rpm.ui.editor.RpmTags; import org.eclipse.linuxtools.internal.rpm.ui.editor.parser.SpecfileTag; import org.eclipse.linuxtools.rpm.ui.editor.parser.Specfile; import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfilePackage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.editor.FormPage; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; public class MainPackagePage extends FormPage { private Specfile specfile; public MainPackagePage(SpecfileFormEditor editor, Specfile specfile) { super(editor, Messages.MainPackagePage_0, Messages.MainPackagePage_1); this.specfile = specfile; } @Override protected void createFormContent(IManagedForm managedForm) { super.createFormContent(managedForm); FormToolkit toolkit = managedForm.getToolkit(); ScrolledForm form = managedForm.getForm(); form.setText(Messages.MainPackagePage_2); GridLayout layout = new GridLayout(); layout.marginWidth = layout.marginHeight = 5; layout.numColumns = 2; RowLayout rowLayout = new RowLayout(); rowLayout.type = SWT.VERTICAL; rowLayout.justify = true; rowLayout.fill = true; form.getBody().setLayout(rowLayout); form.getBody().setLayoutData(rowLayout); layout.numColumns = 2; GridData gd = new GridData(); gd.horizontalSpan = 2; gd.horizontalAlignment = SWT.FILL; final Section mainPackageSection = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); mainPackageSection.setText(Messages.MainPackagePage_3); mainPackageSection.setLayout(new GridLayout()); Composite mainPackageClient = toolkit.createComposite(mainPackageSection); GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = gridLayout.marginHeight = 5; gridLayout.numColumns = 2; mainPackageClient.setLayout(gridLayout); new RpmTagText(mainPackageClient, RpmTags.NAME, specfile); new RpmTagText(mainPackageClient, RpmTags.VERSION, specfile); new RpmTagText(mainPackageClient, RpmTags.RELEASE, specfile); new RpmTagText(mainPackageClient, RpmTags.URL, specfile); new RpmTagText(mainPackageClient, RpmTags.LICENSE, specfile); new RpmTagText(mainPackageClient, RpmTags.GROUP, specfile); new RpmTagText(mainPackageClient, RpmTags.EPOCH, specfile); new RpmTagText(mainPackageClient, RpmTags.BUILD_ROOT, specfile); new RpmTagText(mainPackageClient, RpmTags.BUILD_ARCH, specfile); new RpmTagText(mainPackageClient, RpmTags.SUMMARY, specfile, SWT.MULTI); // BuildRequires final Section buildRequiresSection = toolkit.createSection(mainPackageClient, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); buildRequiresSection.setText(Messages.MainPackagePage_4); buildRequiresSection.setLayout(rowLayout); buildRequiresSection.setExpanded(false); Composite buildRequiresClient = toolkit.createComposite(buildRequiresSection); buildRequiresClient.setLayout(gridLayout); for (SpecfileTag buildRequire : specfile.getBuildRequires()) { new RpmTagText(buildRequiresClient, buildRequire, specfile); } buildRequiresSection.setClient(buildRequiresClient); toolkit.paintBordersFor(buildRequiresClient); toolkit.paintBordersFor(buildRequiresSection); // Requires final Section requiresSection = toolkit.createSection(mainPackageClient, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); requiresSection.setText(Messages.MainPackagePage_5); requiresSection.setLayout(rowLayout); requiresSection.setExpanded(false); Composite requiresClient = toolkit.createComposite(requiresSection); requiresClient.setLayout(gridLayout); requiresClient.setLayoutData(gd); for (SpecfileTag require : specfile.getRequires()) { new RpmTagText(requiresClient, require, specfile); } requiresSection.setClient(requiresClient); toolkit.paintBordersFor(requiresClient); toolkit.paintBordersFor(requiresSection); mainPackageSection.setClient(mainPackageClient); toolkit.paintBordersFor(mainPackageClient); toolkit.paintBordersFor(mainPackageSection); // subpackages final Section packagesSection = toolkit.createSection(form.getBody(), ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); packagesSection.setText(Messages.MainPackagePage_6); packagesSection.setLayout(gridLayout); Composite packagesClient = toolkit.createComposite(packagesSection); packagesClient.setLayout(gridLayout); packagesClient.setLayoutData(gd); for (SpecfilePackage specfilePackage : specfile.getPackages().getPackages()) { if (specfilePackage.isMainPackage()) { continue; } final Section packageSection = toolkit.createSection(packagesClient, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); packageSection.setText(specfilePackage.getFullPackageName()); packageSection.setExpanded(false); packageSection.setLayout(rowLayout); Composite packageClient = toolkit.createComposite(packageSection); packageClient.setLayout(gridLayout); packageClient.setLayoutData(gd); new RpmTagText(packageClient, RpmTags.SUMMARY, specfile, specfilePackage, SWT.MULTI); new RpmTagText(packageClient, RpmTags.GROUP, specfile, specfilePackage, SWT.MULTI); final Section packageRequiresSection = toolkit.createSection(packageClient, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED); packageRequiresSection.setText(Messages.MainPackagePage_7); packageRequiresSection.setLayout(rowLayout); packageRequiresSection.setLayoutData(gd); Composite packageRequiresClient = toolkit.createComposite(packageRequiresSection); packageRequiresClient.setLayout(gridLayout); packageRequiresClient.setLayoutData(gd); for (SpecfileTag require : specfilePackage.getRequires()) { new RpmTagText(packageRequiresClient, require, specfile); } packageRequiresSection.setClient(packageRequiresClient); toolkit.paintBordersFor(packageRequiresClient); toolkit.paintBordersFor(packageRequiresSection); packageSection.setClient(packageClient); toolkit.paintBordersFor(packageClient); toolkit.paintBordersFor(packageSection); } packagesSection.setClient(packagesClient); toolkit.paintBordersFor(packagesClient); toolkit.paintBordersFor(packagesSection); managedForm.refresh(); } }