/*******************************************************************************
* Copyright (c) 2013 AGETO Service GmbH 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:
* Gunnar Wagenknecht - initial API and implementation
*******************************************************************************/
package org.eclipse.gyrex.admin.ui.jobs.internal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import org.eclipse.jface.fieldassist.ContentProposal;
import org.eclipse.jface.fieldassist.IContentProposal;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.apache.commons.lang.StringUtils;
final class TimeZoneProposals implements IContentProposalProvider {
/** serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public IContentProposal[] getProposals(final String contents, final int position) {
final List<IContentProposal> resultList = new ArrayList<IContentProposal>();
final String patternString = StringUtils.trimToNull(StringUtils.substring(contents, 0, position));
final String[] availableIDs = TimeZone.getAvailableIDs();
Arrays.sort(availableIDs);
for (final String id : availableIDs) {
final TimeZone timeZone = TimeZone.getTimeZone(id);
if ((null == patternString) || StringUtils.contains(StringUtils.lowerCase(timeZone.getID()), StringUtils.lowerCase(patternString))) {
resultList.add(new ContentProposal(timeZone.getID(), id + " - " + timeZone.getDisplayName(Locale.US)));
}
}
return resultList.toArray(new IContentProposal[resultList.size()]);
}
}