001: package com.calipso.reportgenerator.userinterface;
002:
003: import javax.swing.*;
004: import javax.swing.border.Border;
005: import java.awt.dnd.*;
006: import java.awt.datatransfer.DataFlavor;
007: import java.awt.*;
008: import com.calipso.reportgenerator.reportdefinitions.types.DimensionDefinitionLocationType;
009: import com.calipso.reportgenerator.common.ShowExceptionMessageDialog;
010:
011: /**
012: * Clase utilizada para crear unn objeto con propiedades de Drop
013: */
014: public class DropTargetPanel extends JPanel implements
015: DropTargetListener {
016:
017: private FieldPositionListener listener;
018: private JSplitPane mainSplit;
019: private int location;
020:
021: /**
022: * Setea el listener FieldPositionListener para realizar el intercambio
023: * @param listener
024: */
025: public void setFieldPositionListener(FieldPositionListener listener) {
026: this .listener = listener;
027: }
028:
029: /**
030: * Crea un objeto DropTargetPanel
031: * @param name
032: * @param mainSplit
033: */
034: public DropTargetPanel(String name, JSplitPane mainSplit) {
035: this .mainSplit = mainSplit;
036: setName(name);
037: location = getX();
038: setDropTarget(new DropTarget(this , this ));
039: setLayout(new FlowLayout(FlowLayout.LEFT));
040: ((FlowLayout) getLayout()).setHgap(0);
041: ((FlowLayout) getLayout()).setVgap(-2);
042: if (name == DimensionDefinitionLocationType.ROW.toString()) {
043: ((FlowLayout) getLayout()).setVgap(0);
044: validate();
045: }
046:
047: }
048:
049: /**
050: * Determine los componentes donde se podra realizar el Drag
051: * @param name
052: * @return
053: */
054: public DragSourcePanel addField(String name, PivotTable pivote,
055: String description) {
056: DragSourcePanel panel = new DragSourcePanel(name, pivote,
057: description, getName(), pivote.getPivotTableFrame()
058: .getReportManager(), pivote
059: .getPivotTableFrame().getReportHandle());
060: Border border = new javax.swing.border.TitledBorder("");
061: ((javax.swing.border.TitledBorder) border)
062: .setTitleColor(Color.BLACK);
063: panel.setBorder(border);
064: add(panel);
065: return panel;
066: }
067:
068: /**
069: * Retorna un objeto DragSourcePanel
070: * @param panel
071: * @return
072: */
073: public DragSourcePanel addFieldPanel(DragSourcePanel panel) {
074: add(panel);
075: return panel;
076: }
077:
078: /**
079: * Implementa la interface DropTargetListener
080: * @param dtde
081: */
082: public void dragEnter(DropTargetDragEvent dtde) {
083: }
084:
085: /**
086: * Implementa la interface DropTargetListener
087: * @param dtde
088: */
089: public void dragOver(DropTargetDragEvent dtde) {
090: }
091:
092: /**
093: * Implementa la interface DropTargetListener
094: * @param dtde
095: */
096: public void dropActionChanged(DropTargetDragEvent dtde) {
097: }
098:
099: /**
100: * Implementa la interface DropTargetListener
101: * @param dte
102: */
103: public void dragExit(DropTargetEvent dte) {
104:
105: }
106:
107: /**
108: * Implementa la interface DropTargetListener
109: * @param dtde
110: */
111: public void drop(DropTargetDropEvent dtde) {
112: DataFlavor stringFlavor = DataFlavor.stringFlavor;
113: String key = null;
114: try {
115: key = dtde.getTransferable().getTransferData(stringFlavor)
116: .toString();
117: if (getName() == "R") {
118: this .mainSplit.setDividerLocation(getWidth());
119: this .mainSplit.revalidate();
120: }
121: location = (int) dtde.getLocation().getX();
122:
123: listener.fieldPositionChanged(getName(), key, dtde
124: .getLocation());
125: } catch (Exception e) {
126: ShowExceptionMessageDialog
127: .initExceptionDialogMessage(
128: com.calipso.reportgenerator.common.LanguageTraslator
129: .traslate("214"), e);
130: }
131: dtde.dropComplete(true);
132: }
133:
134: /**
135: * Retorna la posicion X del componente
136: * @return
137: */
138:
139: public int getLocationComponent() {
140: return location;
141: }
142:
143: /**
144: * Remueve todos los componentes
145: */
146: public void removeAllComponents() {
147: removeAll();
148: }
149: }
|