/******************************************************************************* * Copyright (c) 2014 Bruno Medeiros and other Contributors. * 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: * Bruno Medeiros - initial API and implementation *******************************************************************************/ package com.googlecode.goclipse.ui.properties; import org.eclipse.core.resources.IProject; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import melnorme.lang.ide.core.operations.build.VariablesResolver; import melnorme.lang.ide.ui.build.BuildTargetEditor; import melnorme.lang.ide.ui.build.CommandInvocationEditor; import melnorme.lang.ide.ui.preferences.ProjectBuildConfigurationComponent; import melnorme.lang.ide.ui.preferences.pages.BuildConfigurationPropertyPage; import melnorme.util.swt.components.misc.StatusMessageWidget; import melnorme.utilbox.status.Severity; public class GoProjectBuildConfigurationPropertyPage extends BuildConfigurationPropertyPage { @Override protected ProjectBuildConfigurationComponent createProjectConfigWidget(IProject project) { return new GoProjectOptionsBlock(project); } public class GoProjectOptionsBlock extends ProjectBuildConfigurationComponent { public static final String BUILD_COMMAND_OUTPUT_FORMAT_MESSAGE = "For GoClipse to extract error/warning messages from the output of this command, " + "the output must be in the same format of either the `go build` or `gometalinter` command."; public GoProjectOptionsBlock(IProject project) { super(project); } @Override protected BuildTargetEditor init_createBuildTargetSettingsComponent() { return new BuildTargetEditor( getBuildManager(), true, this::getDefaultBuildCommand, this::getDefaultExecutablePath ) { @Override protected CommandInvocationEditor init_createArgumentsField() { VariablesResolver varResolver = buildManager.getToolManager().getVariablesManager(null); StatusMessageWidget statusWidget = new StatusMessageWidget() { @Override protected void createContents(Composite topControl) { super.createContents(topControl); ((GridData) hintText.getLayoutData()).widthHint = 250; } @Override public void updateWidgetFromInput() { setStatusMessage(Severity.INFO, BUILD_COMMAND_OUTPUT_FORMAT_MESSAGE); } }; BuildCommandEditor buildCommandEditor = new BuildCommandEditor(getDefaultBuildCommand, varResolver); buildCommandEditor.addChildWidget(statusWidget); return buildCommandEditor; } }; } } }