-
Bug
-
Resolution: Unresolved
-
P4
-
None
-
6u4
-
sparc
-
solaris_2.5.1
OPERATING SYSTEM(S):
All
FULL JDK VERSION(S):
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
STEPS TO REPRODUCE:
1. Install 1.6.0_04. Set PATH to java.
2. To start the test compile and run the following testcase.
4. Select "Swing text components".
5. Again,Select "Swing Drag only components".
6. Select "HTML" radio button of JEditor Pane1 from "Swing text
components".
7. Click on "JTree" & Do "Control +A" to select all JTree objects &
drop on to "JEditorPane1".
8. JTree,colors,sports and food will be shown in bullets.
9. Now, put the cursor at the end of last bullet & press Backspace.
Keep on deleting until all the bullets are deleted.
Observed result:
Entire text will be removed as you keep on deleting, except one bullet.
Expected result:
The above said bullet should be removed.
TESTCASE:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class dndtest {
static JCheckBox textComponentsBox = null;
static JFrame textComponentsFrame = null;
static JCheckBox dragOnlyBox = null;
static JFrame dndDragOnlyFrame = null;
static JPanel swingOptionsPanel = null;
public static void main(String[] args) {
final JFrame controlFrame = new JFrame("DnD Control Window : ");
controlFrame.setResizable(true);
Container controlPane = controlFrame.getContentPane();
controlFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
textComponentsBox = new JCheckBox("Swing text components");
textComponentsBox.setSelected(false);
textComponentsBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
textComponentsFrame = new JFrame("Swing Text Components : ");
Container container = textComponentsFrame.getContentPane();
container.add(new dndTextComponentsPanel().dndJEditorPane());
textComponentsFrame.addWindowListener(new FrameListener(textComponentsBox));
textComponentsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
textComponentsFrame.pack();
textComponentsFrame.setVisible(true);
} else {
textComponentsFrame.dispose();
}
}
});
dragOnlyBox = new JCheckBox("Swing Drag Only components");
dragOnlyBox.setSelected(false);
dragOnlyBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
dndDragOnlyFrame = new JFrame("Swing Drag Only components : ");
Container container = dndDragOnlyFrame.getContentPane();
container.add(new dndDragOnly());
dndDragOnlyFrame.addWindowListener(new FrameListener(dragOnlyBox));
dndDragOnlyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dndDragOnlyFrame.setResizable(true);
dndDragOnlyFrame.pack();
dndDragOnlyFrame.setVisible(true);
} else {
dndDragOnlyFrame.dispose();
}
}
});
swingOptionsPanel = new JPanel();
swingOptionsPanel.setLayout(new GridLayout(3, 3));
swingOptionsPanel.setBorder(BorderFactory.createTitledBorder("Drag and Drop Components"));
swingOptionsPanel.add(textComponentsBox);
swingOptionsPanel.add(dragOnlyBox);
controlPane.add(swingOptionsPanel);
controlFrame.pack();
controlFrame.setVisible(true);
}
}
class dndDragOnly extends JPanel {
private JPanel treePanel = null;
JFileChooser fileChooser1;
JTree tree1;
public dndDragOnly() {
JPanel p1 = new JPanel();
p1.add(dndJTrees());
this.add(p1, BorderLayout.NORTH);
this.setBorder(BorderFactory.createTitledBorder("Drag Only Components"));
}
public JPanel dndJTrees() {
tree1 = new JTree();
tree1.setDragEnabled(true);
treePanel = new JPanel();
treePanel.add(tree1);
treePanel.setBorder(BorderFactory.createTitledBorder("JTree"));
return treePanel;
}
}
class dndTextComponentsPanel extends JPanel {
final String nurseryText1 = "Baa, baa, black sheep, Have you any wool? Yes sir, yes sir, Three bags full;";
private JEditorPane editorPane1 = null;
private JScrollPane editorScrollPane1 = null;
private JRadioButton plainButton = null;
private JRadioButton htmlButton = null;
public JPanel dndJEditorPane() {
JPanel epPanel = null;
editorPane1 = new JEditorPane("text/plain", nurseryText1);
editorScrollPane1 = new JScrollPane(editorPane1);
editorScrollPane1.setBorder(BorderFactory.createTitledBorder("JEditorPane 1"));
editorPane1.setDragEnabled(true);
plainButton = new JRadioButton("PLAIN");
htmlButton = new JRadioButton("HTML");
plainButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
editorPane1.setContentType("text/plain");
editorPane1.setText(nurseryText1);
}
});
htmlButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
editorPane1.setContentType("text/html");
editorPane1.setText(nurseryText1);
}
});
ButtonGroup group = new ButtonGroup();
group.add(plainButton);
group.add(htmlButton);
plainButton.setSelected(true);
JPanel panel = new JPanel();
panel.add(plainButton);
panel.add(htmlButton);
panel.setVisible(true);
// setup scroll panes
editorScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
editorScrollPane1.setPreferredSize(new Dimension(200, 110));
editorScrollPane1.setMinimumSize(new Dimension(10, 10));
epPanel=new JPanel();
epPanel.setLayout(new BorderLayout());
epPanel.add(panel, BorderLayout.SOUTH);
epPanel.add(editorScrollPane1, BorderLayout.NORTH);
epPanel.setVisible(true);
return epPanel;
}
}
class FrameListener implements WindowListener {
JCheckBox cb;
FrameListener(JCheckBox cb) {
this.cb = cb;
}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
cb.setSelected(false);
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
}
All
FULL JDK VERSION(S):
java version "1.6.0_04"
Java(TM) SE Runtime Environment (build 1.6.0_04-b12)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
STEPS TO REPRODUCE:
1. Install 1.6.0_04. Set PATH to java.
2. To start the test compile and run the following testcase.
4. Select "Swing text components".
5. Again,Select "Swing Drag only components".
6. Select "HTML" radio button of JEditor Pane1 from "Swing text
components".
7. Click on "JTree" & Do "Control +A" to select all JTree objects &
drop on to "JEditorPane1".
8. JTree,colors,sports and food will be shown in bullets.
9. Now, put the cursor at the end of last bullet & press Backspace.
Keep on deleting until all the bullets are deleted.
Observed result:
Entire text will be removed as you keep on deleting, except one bullet.
Expected result:
The above said bullet should be removed.
TESTCASE:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class dndtest {
static JCheckBox textComponentsBox = null;
static JFrame textComponentsFrame = null;
static JCheckBox dragOnlyBox = null;
static JFrame dndDragOnlyFrame = null;
static JPanel swingOptionsPanel = null;
public static void main(String[] args) {
final JFrame controlFrame = new JFrame("DnD Control Window : ");
controlFrame.setResizable(true);
Container controlPane = controlFrame.getContentPane();
controlFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
textComponentsBox = new JCheckBox("Swing text components");
textComponentsBox.setSelected(false);
textComponentsBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
textComponentsFrame = new JFrame("Swing Text Components : ");
Container container = textComponentsFrame.getContentPane();
container.add(new dndTextComponentsPanel().dndJEditorPane());
textComponentsFrame.addWindowListener(new FrameListener(textComponentsBox));
textComponentsFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
textComponentsFrame.pack();
textComponentsFrame.setVisible(true);
} else {
textComponentsFrame.dispose();
}
}
});
dragOnlyBox = new JCheckBox("Swing Drag Only components");
dragOnlyBox.setSelected(false);
dragOnlyBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
dndDragOnlyFrame = new JFrame("Swing Drag Only components : ");
Container container = dndDragOnlyFrame.getContentPane();
container.add(new dndDragOnly());
dndDragOnlyFrame.addWindowListener(new FrameListener(dragOnlyBox));
dndDragOnlyFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dndDragOnlyFrame.setResizable(true);
dndDragOnlyFrame.pack();
dndDragOnlyFrame.setVisible(true);
} else {
dndDragOnlyFrame.dispose();
}
}
});
swingOptionsPanel = new JPanel();
swingOptionsPanel.setLayout(new GridLayout(3, 3));
swingOptionsPanel.setBorder(BorderFactory.createTitledBorder("Drag and Drop Components"));
swingOptionsPanel.add(textComponentsBox);
swingOptionsPanel.add(dragOnlyBox);
controlPane.add(swingOptionsPanel);
controlFrame.pack();
controlFrame.setVisible(true);
}
}
class dndDragOnly extends JPanel {
private JPanel treePanel = null;
JFileChooser fileChooser1;
JTree tree1;
public dndDragOnly() {
JPanel p1 = new JPanel();
p1.add(dndJTrees());
this.add(p1, BorderLayout.NORTH);
this.setBorder(BorderFactory.createTitledBorder("Drag Only Components"));
}
public JPanel dndJTrees() {
tree1 = new JTree();
tree1.setDragEnabled(true);
treePanel = new JPanel();
treePanel.add(tree1);
treePanel.setBorder(BorderFactory.createTitledBorder("JTree"));
return treePanel;
}
}
class dndTextComponentsPanel extends JPanel {
final String nurseryText1 = "Baa, baa, black sheep, Have you any wool? Yes sir, yes sir, Three bags full;";
private JEditorPane editorPane1 = null;
private JScrollPane editorScrollPane1 = null;
private JRadioButton plainButton = null;
private JRadioButton htmlButton = null;
public JPanel dndJEditorPane() {
JPanel epPanel = null;
editorPane1 = new JEditorPane("text/plain", nurseryText1);
editorScrollPane1 = new JScrollPane(editorPane1);
editorScrollPane1.setBorder(BorderFactory.createTitledBorder("JEditorPane 1"));
editorPane1.setDragEnabled(true);
plainButton = new JRadioButton("PLAIN");
htmlButton = new JRadioButton("HTML");
plainButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
editorPane1.setContentType("text/plain");
editorPane1.setText(nurseryText1);
}
});
htmlButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
editorPane1.setContentType("text/html");
editorPane1.setText(nurseryText1);
}
});
ButtonGroup group = new ButtonGroup();
group.add(plainButton);
group.add(htmlButton);
plainButton.setSelected(true);
JPanel panel = new JPanel();
panel.add(plainButton);
panel.add(htmlButton);
panel.setVisible(true);
// setup scroll panes
editorScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
editorScrollPane1.setPreferredSize(new Dimension(200, 110));
editorScrollPane1.setMinimumSize(new Dimension(10, 10));
epPanel=new JPanel();
epPanel.setLayout(new BorderLayout());
epPanel.add(panel, BorderLayout.SOUTH);
epPanel.add(editorScrollPane1, BorderLayout.NORTH);
epPanel.setVisible(true);
return epPanel;
}
}
class FrameListener implements WindowListener {
JCheckBox cb;
FrameListener(JCheckBox cb) {
this.cb = cb;
}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
cb.setSelected(false);
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
}