use of javax.swing.JList.DropLocation in project knime-core by knime.
the class DropPane method createColumnList.
/**
*/
protected void createColumnList() {
m_columnListModel = new DefaultListModel<String>();
m_columnList = new JList<String>(m_columnListModel);
m_columnList.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(final MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(final MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(final MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(final MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(final MouseEvent e) {
if (e.getClickCount() > 1) {
int i = m_columnList.getSelectedIndex();
getConfig().addElement(m_columnListModel.get(i));
m_columnListModel.remove(i);
}
}
});
m_columnList.setCellRenderer(new ListCellRenderer<String>() {
@Override
public Component getListCellRendererComponent(final JList<? extends String> list, final String value, final int index, final boolean isSelected, final boolean cellHasFocus) {
if (value.endsWith(" ")) {
JLabel l = new JLabel(value.trim());
l.setBorder(BorderFactory.createLineBorder(Color.RED));
return l;
} else {
return new JLabel(value);
}
}
});
m_columnList.setAutoscrolls(true);
m_columnList.addPropertyChangeListener("dropLocation", new PropertyChangeListener() {
@Override
public void propertyChange(final PropertyChangeEvent evt) {
DropLocation dropLocation = (DropLocation) (evt.getNewValue());
if (dropLocation != null) {
int mouseY = getParent().getMousePosition().y;
int mouseX = getParent().getMousePosition().x;
getParent().dispatchEvent(new MouseEvent(getParent(), MouseEvent.MOUSE_DRAGGED, System.currentTimeMillis(), 0, mouseX, mouseY, mouseX, mouseY, 1, false, MouseEvent.BUTTON1));
}
}
});
m_columnList.setDragEnabled(true);
m_columnList.setTransferHandler(new ListTransferHandler());
m_columnList.getModel().addListDataListener(new ListDataListener() {
@Override
public void intervalRemoved(final ListDataEvent e) {
if (m_columnList.getModel().getSize() == 0) {
getParent().remove(getComponentPanel());
getParent().repaint();
setParent(null);
getConfig().removePanel(getPosition());
} else if (!m_loading) {
getConfig().getData().get(getPosition()).getSelection().clear();
for (int i = 0; i < m_columnListModel.getSize(); i++) {
getConfig().getData().get(getPosition()).getSelection().add(m_columnListModel.getElementAt(i));
}
}
}
@Override
public void intervalAdded(final ListDataEvent e) {
if (!m_loading) {
getConfig().getData().get(getPosition()).getSelection().clear();
for (int i = 0; i < m_columnListModel.getSize(); i++) {
getConfig().getData().get(getPosition()).getSelection().add(m_columnListModel.getElementAt(i));
}
}
}
@Override
public void contentsChanged(final ListDataEvent e) {
// nothing
}
});
m_columnList.setPreferredSize(new Dimension(100, 100));
List<String> columns = getConfig().getData().get(getPosition()).getSelection();
for (int i = 0; i < columns.size(); i++) {
m_columnListModel.add(i, columns.get(i));
}
m_columnList.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
}
Aggregations