1 /*
2  * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 package javax.swing;
26 
27 /**
28  * Drop modes, used to determine the method by which a component
29  * tracks and indicates a drop location during drag and drop.
30  *
31  * @author Shannon Hickey
32  * @see JTable#setDropMode
33  * @see JList#setDropMode
34  * @see JTree#setDropMode
35  * @see javax.swing.text.JTextComponent#setDropMode
36  * @since 1.6
37  */
38 public enum DropMode {
39 
40     /**
41      * A component's own internal selection mechanism (or caret for text
42      * components) should be used to track the drop location.
43      */
44     USE_SELECTION,
45 
46     /**
47      * The drop location should be tracked in terms of the index of
48      * existing items. Useful for dropping on items in tables, lists,
49      * and trees.
50      */
51     ON,
52 
53     /**
54      * The drop location should be tracked in terms of the position
55      * where new data should be inserted. For components that manage
56      * a list of items (list and tree for example), the drop location
57      * should indicate the index where new data should be inserted.
58      * For text components the location should represent a position
59      * between characters. For components that manage tabular data
60      * (table for example), the drop location should indicate
61      * where to insert new rows, columns, or both, to accommodate
62      * the dropped data.
63      */
64     INSERT,
65 
66     /**
67      * The drop location should be tracked in terms of the row index
68      * where new rows should be inserted to accommodate the dropped
69      * data. This is useful for components that manage tabular data.
70      */
71     INSERT_ROWS,
72 
73     /**
74      * The drop location should be tracked in terms of the column index
75      * where new columns should be inserted to accommodate the dropped
76      * data. This is useful for components that manage tabular data.
77      */
78     INSERT_COLS,
79 
80     /**
81      * This mode is a combination of <code>ON</code>
82      * and <code>INSERT</code>, specifying that data can be
83      * dropped on existing items, or in insert locations
84      * as specified by <code>INSERT</code>.
85      */
86     ON_OR_INSERT,
87 
88     /**
89      * This mode is a combination of <code>ON</code>
90      * and <code>INSERT_ROWS</code>, specifying that data can be
91      * dropped on existing items, or as insert rows
92      * as specified by <code>INSERT_ROWS</code>.
93      */
94     ON_OR_INSERT_ROWS,
95 
96     /**
97      * This mode is a combination of <code>ON</code>
98      * and <code>INSERT_COLS</code>, specifying that data can be
99      * dropped on existing items, or as insert columns
100      * as specified by <code>INSERT_COLS</code>.
101      */
102     ON_OR_INSERT_COLS
103 }
104