1 /*
2 * Copyright (c) 2003-2008 by Cosylab d. d.
3 *
4 * This file is part of CosyBeans.
5 *
6 * CosyBeans is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * CosyBeans is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with CosyBeans. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package com.cosylab.gui.displayers;
21
22 /**
23 * <code>MultipleDataConsumer</code> is data consumer, which is able to process
24 * at the same time several dynamic data sources by allocation own simple data
25 * consumer for each source.
26 *
27 * @author <a href="mailto:igor.kriznar@cosylab.com">Igor Kriznar</a>
28 * @version $Id: MultipleDataConsumer.java,v 1.4 2008-04-22 12:31:02 jbobnar Exp $
29 *
30 * @since Nov 24, 2003.
31 */
32 public interface MultipleDataConsumer
33 {
34 /**
35 * <p>
36 * Returns data consumer of specified data consumer type and for specified
37 * string name. The organization of data is indicated with name (list,
38 * table, tree organization). Multiple consumer might interprete this by
39 * it's own preferences or abilities. The name of returned consuer must
40 * equals to provided name.
41 * </p>
42 *
43 * <p>
44 * Example. Names: <tt>PS1/current, PS1/readback, PS2/current,
45 * PS2/readback</tt> migth table displayer interprete as two rows (PS1 and
46 * PS2) wtih two columns (current and readback). Tree displayer migth
47 * interprete this names as two branches with two subbranches.
48 * </p>
49 *
50 * <p>
51 * Note that name is not fixed consumer property. Some displayers migth
52 * expect for name to be same as DISPLAY_NAME and is changed if display
53 * name is changed.
54 * </p>
55 *
56 * @param name organized data name
57 * @param type required data soncumer type
58 *
59 * @return newly allocated consumer for required name and type
60 */
61 public <D extends DataConsumer> D getConsumer(String name, Class<D> type);
62
63 /**
64 * Requests frm this multiple consumer to release all resources connectet
65 * to provided single consumer. Provided consumer must be created by this
66 * multiple consumer.
67 *
68 * @param consumer the consumer to be released
69 */
70 public void releaseConsumer(DataConsumer consumer);
71
72 /**
73 * Returns all data consumers created by this multiple data consumer.
74 *
75 * @return all data consumers created by this multiple data consumer
76 */
77 public DataConsumer[] getConsumers();
78
79 /**
80 * Returns array of supported data consumer types, which can be used as
81 * parameter and returnned with <code>getConsumer(String,Class)</code>
82 * method.
83 *
84 * @return array of supported data consumer types
85 */
86 public Class<DataConsumer>[] getSupportedConsumerTypes();
87 }
88
89 /* __oOo__ */