Класс 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;

/** Библиотека компонентов, к которой пользователь получает доступ. */
public class Components extends Library {
    /** Список всех инструментов, содержащихся в этой библиотеке. Технически,
     * библиотеки хранят инструменты (tools), что является чуть более общим
     * понятием, чем компоненты. На практике же чаще всего создаются
     * объекты AddTool для новых компонентов, которые можно добавлять на холст.
     */
    private List<AddTool> tools;
    
    /** Создаёт экземпляр этой библиотеки. Данный конструктор вызывается
     * средой Logisim-evolution в первую очередь при открытии 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;
    }
}

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