All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fife.tmm.WordsTable Maven / Gradle / Ivy

Go to download

An application to easily create syntax highlighting for custom languages in RSyntaxTextArea.

The newest version!
package org.fife.tmm;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

import org.fife.ui.modifiabletable.AbstractRowHandler;
import org.fife.ui.modifiabletable.ModifiableTable;


/**
 * A modifiable table that contains a simple list of words.
 *
 * @author Robert Futrell
 * @version 1.0
 */
class WordsTable extends ModifiableTable {

	private TokenMakerMaker app;
	private String type;

	WordsTable(TokenMakerMaker app, String root) {
		super(new DefaultTableModel()); // Unfortunate
		WordsTableModel model = new WordsTableModel();
		model.setColumnCount(1);
		getTable().setModel(model);
		getTable().setTableHeader(null);
		getTable().setShowGrid(false);
		getTable().setRowSorter(model.getRowSorter());
		getTable().getRowSorter().toggleSortOrder(0);
		this.app = app;
		setRowHandler(new KeywordRowHandler(app));
		type = app.getString("Dialog.ModifySomething." + root);
	}


	public void addWords(List words) {
		if (words!=null) {
			Collections.sort(words);
		}
		WordsTableModel wtm = (WordsTableModel)getTable().getModel();
		wtm.addWords(words);
	}


	@SuppressWarnings("unchecked")
	public List getWords() {
		List words = new ArrayList<>();
		Vector> vec = (Vector>)getDataVector();
		if (vec!=null && vec.size()>0) {
			for (Vector temp : vec) {
				String text = (String)temp.get(0);
				words.add(text);
			}
		}
		Collections.sort(words);
		return words;
	}


	public void setWords(List words) {
		WordsTableModel wtm = (WordsTableModel)getTable().getModel();
		wtm.setWords(words);
	}


    /**
     * Row handler for the keywords table.
     */
	private final class KeywordRowHandler extends AbstractRowHandler {

		private TokenMakerMaker parent;

		private KeywordRowHandler(TokenMakerMaker parent) {
			this.parent = parent;
		}

		@Override
		public Object[] getNewRowInfo(Object[] old) {

			String key = "Dialog.ModifySomething.Prompt." +
				(old==null ? "NewSomething" : "ModifySomething");
			String text = app.getString(key, type);

			String title = app.getString("Dialog.ModifySomething.Prompt.Title",
											type);

			String input = (String)JOptionPane.showInputDialog(parent, text,
					title, JOptionPane.QUESTION_MESSAGE, null, null,
								old==null ? null : old[0]);
			return input==null || input.length()==0 ?
									null : new String[] { input };
		}

	}


}