blob: 445bb402f888093245fa35ada5a67a2714003afb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 IBM Corporation and others.
* 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:
* IBM Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.ptp.internal.rdt.ui.scannerinfo;
import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.ui.newui.IncludeTab;
import org.eclipse.ptp.internal.rdt.ui.RDTHelpContextIds;
import org.eclipse.ptp.rdt.core.services.IRDTServiceConstants;
import org.eclipse.ptp.rdt.ui.serviceproviders.IRemoteToolsIndexServiceProvider;
import org.eclipse.ptp.rdt.ui.serviceproviders.RSECIndexServiceProvider;
import org.eclipse.ptp.services.core.IService;
import org.eclipse.ptp.services.core.IServiceConfiguration;
import org.eclipse.ptp.services.core.IServiceModelManager;
import org.eclipse.ptp.services.core.IServiceProvider;
import org.eclipse.ptp.services.core.ServiceModelManager;
/**
* Reuse the standard CDT IncludeTab but override the functionality of the Add
* and Edit buttons to pop up our custom remote dialog.
*/
public class RemoteIncludeTab extends IncludeTab {
@Override
public ICLanguageSettingEntry doAdd() {
RemoteIncludeDialog dlg = new RemoteIncludeDialog(usercomp.getShell(), Messages.RemoteIncludeTab_title, false, getResDesc()
.getConfiguration());
setRemoteConnection(dlg);
if (dlg.open() && dlg.getDirectory().trim().length() > 0) {
toAllCfgs = dlg.isAllConfigurations();
toAllLang = dlg.isAllLanguages();
int flags = 0;
return new CIncludePathEntry(dlg.getDirectory(), flags);
}
return null;
}
@Override
public ICLanguageSettingEntry doEdit(ICLanguageSettingEntry ent) {
RemoteIncludeDialog dlg = new RemoteIncludeDialog(usercomp.getShell(), Messages.RemoteIncludeTab_title, true, getResDesc()
.getConfiguration());
dlg.setPathText(ent.getValue());
setRemoteConnection(dlg);
if (dlg.open()) {
int flags = 0;
return new CIncludePathEntry(dlg.getDirectory(), flags);
}
return null;
}
@Override
public String getHelpContextId() {
return RDTHelpContextIds.REMOTE_INCLUDE_TAB;
}
private void setRemoteConnection(RemoteIncludeDialog dlg) {
IServiceModelManager manager = ServiceModelManager.getInstance();
IServiceConfiguration config = manager.getActiveConfiguration(page.getProject());
if (config != null) {
IService service = manager.getService(IRDTServiceConstants.SERVICE_C_INDEX);
if (service != null) {
IServiceProvider provider = config.getServiceProvider(service);
if (provider != null) {
if (provider instanceof RSECIndexServiceProvider) {
dlg.setHost(((RSECIndexServiceProvider) provider).getHost());
} else if (provider instanceof IRemoteToolsIndexServiceProvider) {
dlg.setConnection(((IRemoteToolsIndexServiceProvider) provider).getConnection());
}
}
}
}
}
}