/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * 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 net.java.sip.communicator.service.gui; import java.awt.*; import java.util.*; import java.util.List; import javax.swing.*; import net.java.sip.communicator.plugin.desktoputil.*; import net.java.sip.communicator.service.protocol.*; /** * The <tt>UIContact</tt> represents the user interface contact contained in the * contact list component. * * @author Yana Stamcheva */ public abstract class UIContact { /** * Returns the descriptor of this contact. * * @return the descriptor of this contact */ public abstract Object getDescriptor(); /** * Returns the display name of this contact. * * @return the display name of this contact */ public abstract String getDisplayName(); /** * Returns the display details of this contact. These would be shown * whenever the contact is selected. * * @return the display details of this contact */ public abstract String getDisplayDetails(); /** * Returns the index of this contact in its source. * * @return the source index */ public abstract int getSourceIndex(); /** * Creates a tool tip for this contact. If such tooltip is * provided it would be shown on mouse over over this <tt>UIContact</tt>. * * @return the tool tip for this contact descriptor */ public abstract ExtendedTooltip getToolTip(); /** * Returns the right button menu component. * * @return the right button menu component */ public abstract Component getRightButtonMenu(); /** * Returns the parent group. * * @return the parent group */ public abstract UIGroup getParentGroup(); /** * Sets the given <tt>UIGroup</tt> to be the parent group of this * <tt>UIContact</tt>. * * @param parentGroup the parent <tt>UIGroup</tt> of this contact */ public abstract void setParentGroup(UIGroup parentGroup); /** * Returns an <tt>Iterator</tt> over a list of the search strings of this * contact. * * @return an <tt>Iterator</tt> over a list of the search strings of this * contact */ public abstract Iterator<String> getSearchStrings(); /** * Returns the default <tt>ContactDetail</tt> to use for any operations * depending to the given <tt>OperationSet</tt> class. * * @param opSetClass the <tt>OperationSet</tt> class we're interested in * @return the default <tt>ContactDetail</tt> to use for any operations * depending to the given <tt>OperationSet</tt> class */ public abstract UIContactDetail getDefaultContactDetail( Class<? extends OperationSet> opSetClass); /** * Returns a list of all <tt>UIContactDetail</tt>s corresponding to the * given <tt>OperationSet</tt> class. * * @param opSetClass the <tt>OperationSet</tt> class we're looking for * @return a list of all <tt>UIContactDetail</tt>s corresponding to the * given <tt>OperationSet</tt> class */ public abstract List<UIContactDetail> getContactDetailsForOperationSet( Class<? extends OperationSet> opSetClass); /** * Returns a list of all <tt>UIContactDetail</tt>s within this * <tt>UIContact</tt>. * * @return a list of all <tt>UIContactDetail</tt>s within this * <tt>UIContact</tt> */ public abstract List<UIContactDetail> getContactDetails(); /** * Returns all custom action buttons for this notification contact. * * @return a list of all custom action buttons for this notification contact */ public abstract Collection<? extends JButton> getContactCustomActionButtons(); /** * Returns the preferred height of this group in the contact list. * * @return the preferred height of this group in the contact list */ public int getPreferredHeight() { return -1; } /** * Returns all custom action menu items for this contact. * * @param initActions if <tt>true</tt> the actions will be reloaded. * @return a list of all custom action menu items for this contact. */ public Collection<JMenuItem> getContactCustomActionMenuItems( boolean initActions) { return null; } }