// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.history;
import java.awt.datatransfer.Clipboard;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.TransferHandler;
import javax.swing.table.TableModel;
import org.openstreetmap.josm.data.osm.TagMap;
import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
import org.openstreetmap.josm.gui.datatransfer.TagTransferable;
import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
/**
* This transfer handler allows to select and copy tags from a table with the {@link TagTableColumnModel}.
* @author Michael Zangl
* @since 10637
*/
public class TagInfoTransferHandler extends TransferHandler {
@Override
public void exportToClipboard(JComponent comp, Clipboard clip, int action) {
if (comp instanceof JTable) {
TableModel model = ((JTable) comp).getModel();
if (model instanceof TagTableModel) {
exportFromModel((JTable) comp, (TagTableModel) model);
}
}
}
private static void exportFromModel(JTable comp, TagTableModel model) {
int[] selected = comp.getSelectedRows();
TagMap tags = new TagMap();
for (int row : selected) {
String key = model.getKeyAt(row);
String value = model.getValue(key);
if (value != null) {
tags.put(key, value);
}
}
TagTransferData data = new TagTransferData(tags);
ClipboardUtils.copy(new TagTransferable(data));
}
}