/*******************************************************************************
* Copyright (c) 2010 SAP AG.
* 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:
* Mathias Kinzler (SAP AG) - initial implementation
*******************************************************************************/
package org.eclipse.egit.ui.internal.repository;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.PropertyDescriptor;
import org.eclipse.ui.views.properties.PropertySheetPage;
/**
* Read-only view of remote configuration
*/
public class RepositoryRemotePropertySource implements IPropertySource {
private final StoredConfig myConfig;
private final String myName;
/**
* @param config
* @param remoteName
* @param page
*
*/
public RepositoryRemotePropertySource(StoredConfig config,
String remoteName, PropertySheetPage page) {
myConfig = config;
myName = remoteName;
}
@Override
public Object getEditableValue() {
return null;
}
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
try {
myConfig.load();
} catch (IOException e) {
Activator.handleError(
UIText.RepositoryRemotePropertySource_ErrorHeader, e, true);
} catch (ConfigInvalidException e) {
Activator.handleError(
UIText.RepositoryRemotePropertySource_ErrorHeader, e, true);
}
List<IPropertyDescriptor> resultList = new ArrayList<>();
PropertyDescriptor desc = new PropertyDescriptor(RepositoriesView.URL,
UIText.RepositoryRemotePropertySource_RemoteFetchURL_label);
resultList.add(desc);
desc = new PropertyDescriptor(RepositoriesView.FETCH,
UIText.RepositoryRemotePropertySource_FetchLabel);
resultList.add(desc);
desc = new PropertyDescriptor(RepositoriesView.PUSHURL,
UIText.RepositoryRemotePropertySource_RemotePushUrl_label);
resultList.add(desc);
desc = new PropertyDescriptor(RepositoriesView.PUSH,
UIText.RepositoryRemotePropertySource_PushLabel);
resultList.add(desc);
return resultList.toArray(new IPropertyDescriptor[resultList.size()]);
}
@Override
public Object getPropertyValue(Object id) {
String[] list = myConfig.getStringList(RepositoriesView.REMOTE, myName,
(String) id);
if (list != null && list.length > 1) {
// let's show this as "[some/uri][another/uri]"
StringBuilder sb = new StringBuilder();
for (String s : list) {
sb.append('[');
sb.append(s);
sb.append(']');
}
return sb.toString();
}
return myConfig.getString(RepositoriesView.REMOTE, myName, (String) id);
}
@Override
public boolean isPropertySet(Object id) {
// no default values
return false;
}
@Override
public void resetPropertyValue(Object id) {
// nothing to do
}
@Override
public void setPropertyValue(Object id, Object value) {
// read-only
}
}