Класс Library

Точка доступа для JAR библиотеки - это класс, расширяющий класс Library. Основная задача библиотеки - перечислить инструменты, доступные через библиотеку; чаще всего, все инструменты - это инструменты для добавления различных объявленных компонентов, то есть экземпляры класса AddTool, работающие с разными фабриками компонентов.

Components

package com.cburch.gray;

import java.util.Arrays;
import java.util.List;

import com.cburch.logisim.tools.AddTool;
import com.cburch.logisim.tools.Library;

/** The library of components that the user can access. */
public class Components extends Library {
    /** Список всех инструментов, содержащихся в этой библиотеке. Технически,
     * библиотеки содержат инструменты, являющиеся несколько более общим понятием,
     * чем компоненты; с практической точки зрения, однако, вы чаще захотите
     * создать AddTools для новых компонентов, которые могут быть добавлены в схему.
     */
    private List<AddTool> tools;
    
    /** Создаёт экземпляр этой библиотеки. Этот конструктор - это то, к чему
     * Logisim получает доступ в первую очередь, когда открывает JAR файл: он ищет
     * метод-конструктор без аргументов объявленного пользователем класса.
     */
    public Components() {
        tools = Arrays.asList(new AddTool[] {
                new AddTool(new GrayIncrementer()),
                new AddTool(new SimpleGrayCounter()),
                new AddTool(new GrayCounter()),
        });
    }
    
    /** Возвращает имя библиотеки, которое будет видеть пользователь. */ 
    public String getDisplayName() {
        return "Gray Tools";
    }
    
    /** Возвращает список всех инструментов, доступных в этой библиотеке. */
    public List<AddTool> getTools() {
        return tools;
    }
}

Далее: Простой счётчик кода Грея.