Mercurial > hg > thermostat-tools-eclipse
view com.redhat.thermostat.tools.eclipse.plugin/src/com/redhat/thermostat/tools/eclipse/plugin/wizards/PluginXmlProjectSelectionPage.java @ 90:8f2dd0dbdb87
Externalize strings
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Tue, 21 Jan 2014 19:51:04 -0500 |
parents | b788a26c0d4d |
children | 1c4f192bf2e2 |
line wrap: on
line source
package com.redhat.thermostat.tools.eclipse.plugin.wizards; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Path; import org.eclipse.jface.bindings.keys.KeyStroke; import org.eclipse.jface.fieldassist.ContentProposalAdapter; import org.eclipse.jface.fieldassist.SimpleContentProposalProvider; import org.eclipse.jface.fieldassist.TextContentAdapter; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.ContainerSelectionDialog; import com.redhat.thermostat.tools.eclipse.plugin.Messages; public class PluginXmlProjectSelectionPage extends WizardPage { private Text containerText; private ISelection selection; public PluginXmlProjectSelectionPage(ISelection selection) { super("wizardPage"); //$NON-NLS-1$ setTitle(Messages.PluginXmlProjectSelectionPage_title); setDescription(Messages.PluginXmlProjectSelectionPage_description); this.selection = selection; } public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(); container.setLayout(layout); layout.numColumns = 3; layout.verticalSpacing = 9; Label label = new Label(container, SWT.NULL); label.setText(Messages.PluginXmlProjectSelectionPage_projectNameLabel); containerText = new Text(container, SWT.BORDER | SWT.SINGLE); GridData gd = new GridData(GridData.FILL_HORIZONTAL); containerText.setLayoutData(gd); containerText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { dialogChanged(); } }); String[] proposals = getOpenProjectNames().toArray(new String[0]); SimpleContentProposalProvider projectProposalProvider = new SimpleContentProposalProvider(proposals); TextContentAdapter contentAdapter = new TextContentAdapter(); ContentProposalAdapter proposalAdapter = new ContentProposalAdapter(containerText, contentAdapter, projectProposalProvider, null, null); proposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE); Button button = new Button(container, SWT.PUSH); button.setText(Messages.PluginXmlProjectSelectionPage_browse); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { handleBrowse(); } }); initialize(); dialogChanged(); setControl(container); } private void initialize() { if (selection != null && selection.isEmpty() == false && selection instanceof IStructuredSelection) { IStructuredSelection ssel = (IStructuredSelection) selection; if (ssel.size() > 1) return; Object obj = ssel.getFirstElement(); if (obj instanceof IAdaptable) { IProject container = (IProject)((IAdaptable)obj).getAdapter(IProject.class); containerText.setText(container.getName().toString()); } } } private void handleBrowse() { ContainerSelectionDialog dialog = new ContainerSelectionDialog( getShell(), ResourcesPlugin.getWorkspace().getRoot(), false, Messages.PluginXmlProjectSelectionPage_selectFileContainer); if (dialog.open() == ContainerSelectionDialog.OK) { Object[] result = dialog.getResult(); if (result.length == 1) { containerText.setText(((Path) result[0]).toString()); } } } private void dialogChanged() { String containerName = getContainerName(); if (containerName.length() == 0) { updateStatus(Messages.PluginXmlProjectSelectionPage_fileContainerMustBeSpecified); return; } IResource container = ResourcesPlugin.getWorkspace().getRoot() .findMember(new Path(containerName)); if (container == null || (container.getType() & (IResource.PROJECT | IResource.FOLDER)) == 0) { updateStatus(Messages.PluginXmlProjectSelectionPage_fileContainerMustExist); return; } if (!container.isAccessible()) { updateStatus(Messages.PluginXmlProjectSelectionPage_projectMustBeWritable); return; } updateStatus(null); } private void updateStatus(String message) { setErrorMessage(message); setPageComplete(message == null); } public String getContainerName() { return containerText.getText(); } private List<String> getOpenProjectNames() { List<String> result = new ArrayList<>(); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (IProject project : projects) { if (project.isOpen()) { result.add(project.getName()); } } return result; } }