/* * Copyright 2000-2010 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.openapi.vcs.actions; import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; /** * @author Konstantin Bulenkov */ public enum ShortNameType { LASTNAME("lastname", "Last Name"), FIRSTNAME("firstname", "First Name"), NONE("full", "Full name"); private static final String KEY = "annotate.short.names.type"; private final String myId; private final String myDescription; ShortNameType(String id, String description) { myId = id; myDescription = description; } public String getDescription() { return myDescription; } boolean isSet() { return myId.equals(PropertiesComponent.getInstance().getValue(KEY)); } void set() { PropertiesComponent.getInstance().setValue(KEY, myId); } @Nullable public static String shorten(@Nullable String name, @NotNull ShortNameType type) { if (name == null) return null; if (type == NONE) return name; // Vasya Pupkin <vasya.pupkin@jetbrains.com> -> Vasya Pupkin final int[] ind = {name.indexOf('<'), name.indexOf('@'), name.indexOf('>')}; if (0 < ind[0] && ind[0] < ind[1] && ind[1] < ind[2]) { name = name.substring(0, ind[0]).trim(); } // vasya.pupkin@email.com --> vasya pupkin if (!name.contains(" ") && name.contains("@")) { //simple e-mail check. john@localhost name = name.substring(0, name.indexOf('@')); } name = name.replace('.', ' ').replace('_', ' ').replace('-', ' '); final List<String> strings = StringUtil.split(name, " "); if (strings.size() < 2) return name; String shortName; if (type == FIRSTNAME) { shortName = strings.get(0); } else { shortName = strings.get(strings.size() - 1); } return StringUtil.capitalize(shortName); } }