public EditorTab() {
		this.setLayout(new BorderLayout());
		this.list.setCellRenderer(this.renderer);
		this.list.setTransferHandler(new BytecodeEditorTransferHandler(this));
        ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
        toolTipManager.registerComponent(this.list);

		this.add(this.label, BorderLayout.NORTH);
		this.add(this.editorScrollPane, BorderLayout.CENTER);
		
		this.list.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				splitSynchronize();
			}
		});

		this.list.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent me) {
				if (me.getClickCount() == 2
						&& me.getButton() == MouseEvent.BUTTON1) {
					modifyRow();
				} else if (me.getButton() == MouseEvent.BUTTON3) {
					Object obj = list.getSelectedValue();
					if (obj instanceof CodeRow) {
						EditorTab.this.codeContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					} else if (obj instanceof LabelRow) {
						EditorTab.this.labelContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					} else if (obj instanceof MethodDefRow) {
						EditorTab.this.methodContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					} else if (obj instanceof FieldDefRow) {
						EditorTab.this.fieldContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					} else if (obj instanceof ImportDefRow) {
						EditorTab.this.importContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					} else if (obj instanceof ClassDefRow) {
						EditorTab.this.classContextMenu.show(
								EditorTab.this.list, me.getPoint().x, me
										.getPoint().y);
					}
				}
			}
		});

		createContextMenus();
	}