001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: * The Original Software is NetBeans. The Initial Developer of the Original
026: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
027: * Microsystems, Inc. All Rights Reserved.
028: *
029: * If you wish your version of this file to be governed by only the CDDL
030: * or only the GPL Version 2, indicate your decision by adding
031: * "[Contributor] elects to include this software in this distribution
032: * under the [CDDL or GPL Version 2] license." If you do not indicate a
033: * single choice of license, a recipient has the option to distribute
034: * your version of this file under either the CDDL, the GPL Version 2 or
035: * to extend the choice of license to its licensees as provided above.
036: * However, if you add GPL Version 2 code and therefore, elected the GPL
037: * Version 2 license, then the option applies only if the new code is
038: * made subject to such option by the copyright holder.
039: */
040:
041: package org.netbeans.lib.profiler.ui.cpu.statistics.drilldown;
042:
043: import org.netbeans.lib.profiler.results.cpu.marking.Mark;
044: import java.util.List;
045:
046: /**
047: * This interface marks a generic drill-down functionality provider
048: * @author Jaroslav Bachorik
049: */
050: public interface IDrillDown {
051: //~ Methods ------------------------------------------------------------------------------------------------------------------
052:
053: /**
054: * Provides info whether the given mark is the current one
055: */
056: public boolean isCurrent(final Mark mark);
057:
058: /**
059: * Indicates that the drilldown is parked in a special "self" category
060: */
061: public boolean isInSelf();
062:
063: /**
064: * Returns the information whether the drilldown manager is validly setup
065: */
066: public boolean isValid();
067:
068: /**
069: *Returns the current active category
070: * @return Returns the current active category
071: */
072: Mark getCurrentMark();
073:
074: /**
075: * Returns the accumulated time for the current category
076: * @return Returns the accumulated time for the current category
077: */
078: long getCurrentTime(boolean net);
079:
080: /**
081: * Returns the representation of the drill-down filter
082: * @return Returns the drill-down path
083: */
084: List getDrillDownPath();
085:
086: /**
087: * Time getter for category
088: * @param category The category to retrieve the time for
089: * @return Returns the accumulated time per category
090: */
091: long getMarkTime(Mark category, boolean net);
092:
093: /**
094: * Returns the current list of subcategories
095: * @return Returns the list of the current category's subcategories
096: */
097: List getSubmarks();
098:
099: /**
100: * Returns the top level category
101: */
102: Mark getTopMark();
103:
104: /**
105: * Returns the accumulated time for the top category
106: * @return Returns the accumulated time for the top category
107: */
108: long getTopTime(boolean net);
109:
110: void addListener(DrillDownListener listener);
111:
112: /**
113: * Indicates whehter the given mark can be used for drilldown
114: */
115: boolean canDrilldown(Mark mark);
116:
117: /**
118: * Performs drill-down using the specified category
119: * @param category The category to use for drill down
120: */
121: void drilldown(Mark mark);
122:
123: /**
124: * Drills-up one level
125: */
126: void drillup();
127:
128: /**
129: * Drills-up to the specified category
130: */
131: void drillup(Mark mark);
132:
133: void removeListener(DrillDownListener listener);
134:
135: void reset();
136: }
|