/*
* 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 javax.swing.*;
/**
* The <tt>UIGroup</tt> represents the user interface contact list group.
*
* @author Yana Stamcheva
*/
public abstract class UIGroup
{
/**
* The preferred height of this group in the contact list.
*/
private int preferredGroupHeight = -1;
/**
* The display details of this group.
*/
private String displayDetails = "";
/**
* The maximum number of contacts in the contact source.
*/
public static int MAX_GROUPS = 10000000;
/**
* The maximum number of contacts in the group.
*/
public static int MAX_CONTACTS = 10000;
/**
* Returns the descriptor of the group. This would be the underlying object
* that should provide all other necessary information for the group.
*
* @return the descriptor of the group
*/
public abstract Object getDescriptor();
/**
* The display name of the group. The display name is the name to be shown
* in the contact list group row.
*
* @return the display name of the group
*/
public abstract String getDisplayName();
/**
* Returns the display details of this contact. These would be shown
* whenever the contact is selected. The display details aren't obligatory,
* so we return an empty string.
*
* @return the display details of this contact
*/
public String getDisplayDetails()
{
return displayDetails;
}
/**
* Sets the display details of this group.
*
* @return the display details of this group
*/
public void setDisplayDetails(String displayDetails)
{
this.displayDetails = displayDetails;
}
/**
* Returns the index of this group in its source. In other words this is
* the descriptor index.
*
* @return the index of this group in its source
*/
public abstract int getSourceIndex();
/**
* Returns the parent group.
*
* @return the parent group
*/
public abstract UIGroup getParentGroup();
/**
* Indicates if the group is collapsed or expanded.
*
* @return <tt>true</tt> to indicate that the group is collapsed,
* <tt>false</tt> to indicate that it's expanded
*/
public abstract boolean isGroupCollapsed();
/**
* Returns the count of online child contacts.
*
* @return the count of online child contacts
*/
public abstract int countOnlineChildContacts();
/**
* Returns the child contacts count.
*
* @return child contacts count
*/
public abstract int countChildContacts();
/**
* Returns the identifier of this group.
*
* @return the identifier of this group
*/
public abstract String getId();
/**
* Returns the right button menu for this group.
*
* @return the right button menu component for this group
*/
public abstract Component getRightButtonMenu();
/**
* 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 preferredGroupHeight;
}
/**
* Sets the preferred height of this group in the contact list.
*
* @param preferredHeight the preferred height of this group in the contact
* list
*/
public void setPreferredHeight(int preferredHeight)
{
this.preferredGroupHeight = preferredHeight;
}
/**
* Returns all custom action buttons for this group.
*
* @return a list of all custom action buttons for this group
*/
public Collection<? extends JButton> getCustomActionButtons()
{
return null;
}
}