
net.vectorpublish.desktop.vp.api.InheritanceExclusion Maven / Gradle / Ivy
/*
* Copyright (c) 2016, Peter Rader. All rights reserved.
* ___ ___ __ ______ __ __ __ __
* | | |.-----..----.| |_ .-----..----.| __ \.--.--.| |--.| ||__|.-----.| |--.
* | | || -__|| __|| _|| _ || _|| __/| | || _ || || ||__ --|| |
* \_____/ |_____||____||____||_____||__| |___| |_____||_____||__||__||_____||__|__|
*
* http://www.gnu.org/licenses/gpl-3.0.html
*/
package net.vectorpublish.desktop.vp.api;
import net.vectorpublish.desktop.vp.api.InheritanceExclusion.Category;
import net.vectorpublish.desktop.vp.api.history.ReadOnlyHistoryStepDataBean;
import net.vectorpublish.desktop.vp.api.layer.LayerSelectionListener;
import net.vectorpublish.desktop.vp.api.ui.DocumentSelectionChangeListener;
import net.vectorpublish.desktop.vp.api.ui.kf.Keyframer;
/**
* Exclusion interface.
*
* A workaround to not let you extend in example from
* {@link ReadOnlyHistoryStepDataBean} and a {@link Keyframer}.
*
*
* The compiler would not compile and give this message:
*
* The interface InheritanceExclusion cannot be implemented more than once with
* different arguments: InheritanceExclusion<DrawParticipant> and
* InheritanceExclusion<Serializable>
*
* The exclusion does not exclude events of the same category, so you can
* inherit from {@link DocumentSelectionChangeListener} and
* {@link LayerSelectionListener}.
*/
public interface InheritanceExclusion {
/**
* A Category to differ interfaces that are not allowed to inherit each
* other.
*/
public abstract interface Category {
}
/**
* A CDIBean, used to autowire/inject others and itself.
*
* In vectorpublish the autowire-candidates are only found at startup.
*/
public interface CDIBean extends Category {
}
/**
*Used to save a history
*/
public interface HistoryCategory extends Category {
}
public interface LayerNode extends Category {
}
public interface Participant extends Category {
}
public interface Storable extends Category {
}
}