public void updateConstList() {
   switch (constantTypeList.getSelectedIndex()) {
     case 0:
       View.autoResizeColWidth(constantTable, new UIntTableModel(abc));
       break;
     case 1:
       View.autoResizeColWidth(constantTable, new IntTableModel(abc));
       break;
     case 2:
       View.autoResizeColWidth(constantTable, new DoubleTableModel(abc));
       break;
     case 3:
       View.autoResizeColWidth(constantTable, new DecimalTableModel(abc));
       break;
     case 4:
       View.autoResizeColWidth(constantTable, new StringTableModel(abc));
       break;
     case 5:
       View.autoResizeColWidth(constantTable, new NamespaceTableModel(abc));
       break;
     case 6:
       View.autoResizeColWidth(constantTable, new NamespaceSetTableModel(abc));
       break;
     case 7:
       View.autoResizeColWidth(constantTable, new MultinameTableModel(abc));
       break;
   }
   // DefaultTableColumnModel colModel  = (DefaultTableColumnModel) constantTable.getColumnModel();
   // colModel.getColumn(0).setMaxWidth(50);
 }
  public ABCPanel(MainPanel mainPanel) {

    this.mainPanel = mainPanel;
    setLayout(new BorderLayout());

    decompiledTextArea = new DecompiledEditorPane(this);
    decompiledTextArea.addTextChangedListener(this::decompiledTextAreaTextChanged);

    decompiledTextArea.setLinkHandler(
        new LinkHandler() {

          @Override
          public boolean isLink(Token token) {
            return hasDeclaration(token.length == 1 ? token.start : token.start + 1);
          }

          @Override
          public void handleLink(Token token) {
            gotoDeclaration(token.length == 1 ? token.start : token.start + 1);
          }

          @Override
          public Highlighter.HighlightPainter linkPainter() {
            return decompiledTextArea.linkPainter();
          }
        });

    searchPanel = new SearchPanel<>(new FlowLayout(), this);

    decompiledScrollPane = new JScrollPane(decompiledTextArea);

    JPanel iconDecPanel = new JPanel();
    iconDecPanel.setLayout(new BoxLayout(iconDecPanel, BoxLayout.Y_AXIS));
    JPanel iconsPanel = new JPanel();
    iconsPanel.setLayout(new BoxLayout(iconsPanel, BoxLayout.X_AXIS));

    JButton newTraitButton = new JButton(View.getIcon("traitadd16"));
    newTraitButton.setMargin(new Insets(5, 5, 5, 5));
    newTraitButton.addActionListener(this::addTraitButtonActionPerformed);
    newTraitButton.setToolTipText(AppStrings.translate("button.addtrait"));
    iconsPanel.add(newTraitButton);

    scriptNameLabel = new JLabel("-");
    scriptNameLabel.setAlignmentX(0);
    iconsPanel.setAlignmentX(0);
    decompiledScrollPane.setAlignmentX(0);
    iconDecPanel.add(scriptNameLabel);
    iconDecPanel.add(iconsPanel);
    iconDecPanel.add(decompiledScrollPane);

    JPanel decButtonsPan = new JPanel(new FlowLayout());
    decButtonsPan.setBorder(new BevelBorder(BevelBorder.RAISED));
    decButtonsPan.add(editDecompiledButton);
    decButtonsPan.add(experimentalLabel);
    decButtonsPan.add(saveDecompiledButton);
    decButtonsPan.add(cancelDecompiledButton);

    editDecompiledButton.setMargin(new Insets(3, 3, 3, 10));
    saveDecompiledButton.setMargin(new Insets(3, 3, 3, 10));
    cancelDecompiledButton.setMargin(new Insets(3, 3, 3, 10));

    saveDecompiledButton.addActionListener(this::saveDecompiledButtonActionPerformed);
    editDecompiledButton.addActionListener(this::editDecompiledButtonActionPerformed);
    cancelDecompiledButton.addActionListener(this::cancelDecompiledButtonActionPerformed);

    saveDecompiledButton.setVisible(false);
    cancelDecompiledButton.setVisible(false);
    decButtonsPan.setAlignmentX(0);

    JPanel decPanel = new JPanel(new BorderLayout());
    decPanel.add(searchPanel, BorderLayout.NORTH);
    decPanel.add(iconDecPanel, BorderLayout.CENTER);
    decPanel.add(decButtonsPan, BorderLayout.SOUTH);
    detailPanel = new DetailPanel(this);
    JPanel panB = new JPanel();
    panB.setLayout(new BorderLayout());
    panB.add(decPanel, BorderLayout.CENTER);
    panB.add(decLabel, BorderLayout.NORTH);
    decLabel.setHorizontalAlignment(SwingConstants.CENTER);
    // decLabel.setBorder(new BevelBorder(BevelBorder.RAISED));
    splitPane =
        new JPersistentSplitPane(
            JSplitPane.HORIZONTAL_SPLIT,
            panB,
            detailPanel,
            Configuration.guiAvm2SplitPaneDividerLocationPercent);
    splitPane.setContinuousLayout(true);

    decompiledTextArea.changeContentType("text/actionscript");
    decompiledTextArea.setFont(
        new Font("Monospaced", Font.PLAIN, decompiledTextArea.getFont().getSize()));

    View.addEditorAction(
        decompiledTextArea,
        new AbstractAction() {
          @Override
          public void actionPerformed(ActionEvent e) {
            int multinameIndex = decompiledTextArea.getMultinameUnderCaret();
            if (multinameIndex > -1) {
              UsageFrame usageFrame = new UsageFrame(abc, multinameIndex, ABCPanel.this, false);
              usageFrame.setVisible(true);
            }
          }
        },
        "find-usages",
        AppStrings.translate("abc.action.find-usages"),
        "control U");

    View.addEditorAction(
        decompiledTextArea,
        new AbstractAction() {
          @Override
          public void actionPerformed(ActionEvent e) {
            gotoDeclaration(decompiledTextArea.getCaretPosition());
          }
        },
        "find-declaration",
        AppStrings.translate("abc.action.find-declaration"),
        "control B");

    CtrlClickHandler cch = new CtrlClickHandler();
    decompiledTextArea.addKeyListener(cch);
    decompiledTextArea.addMouseListener(cch);
    decompiledTextArea.addMouseMotionListener(cch);

    navigator = new TraitsList(this);

    navPanel = new JPanel(new BorderLayout());
    JPanel navIconsPanel = new JPanel();
    navIconsPanel.setLayout(new BoxLayout(navIconsPanel, BoxLayout.X_AXIS));
    final JToggleButton sortButton = new JToggleButton(View.getIcon("sort16"));
    sortButton.setMargin(new Insets(3, 3, 3, 3));
    navIconsPanel.add(sortButton);
    navPanel.add(navIconsPanel, BorderLayout.SOUTH);
    navPanel.add(new JScrollPane(navigator), BorderLayout.CENTER);
    sortButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
            navigator.setSorted(sortButton.isSelected());
            navigator.updateUI();
          }
        });

    tabbedPane = new JTabbedPane();
    tabbedPane.addTab(AppStrings.translate("traits"), navPanel);
    add(splitPane, BorderLayout.CENTER);

    JPanel panConstants = new JPanel();
    panConstants.setLayout(new BorderLayout());

    constantTypeList =
        new JComboBox<>(
            new String[] {
              "UINT", "INT", "DOUBLE", "DECIMAL", "STRING", "NAMESPACE", "NAMESPACESET", "MULTINAME"
            });
    constantTable = new JTable();
    if (abc != null) {
      View.autoResizeColWidth(constantTable, new UIntTableModel(abc));
    }
    constantTable.setAutoCreateRowSorter(true);

    final ABCPanel t = this;
    constantTable.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            if (e.getClickCount() == 2) {
              if (constantTypeList.getSelectedIndex() == 7) { // MULTINAME
                int rowIndex = constantTable.getSelectedRow();
                if (rowIndex == -1) {
                  return;
                }
                int multinameIndex = constantTable.convertRowIndexToModel(rowIndex);
                if (multinameIndex > 0) {
                  UsageFrame usageFrame = new UsageFrame(abc, multinameIndex, t, false);
                  usageFrame.setVisible(true);
                }
              }
            }
          }
        });
    constantTypeList.addItemListener(this);
    panConstants.add(constantTypeList, BorderLayout.NORTH);
    panConstants.add(new JScrollPane(constantTable), BorderLayout.CENTER);
    tabbedPane.addTab(AppStrings.translate("constants"), panConstants);
  }