001package com.ericlam.mc.eldgui.component.factory; 002 003import com.ericlam.mc.eldgui.component.ComponentFactory; 004 005/** 006 * 數字輸入組件工廠,可用任意數字類型 007 */ 008public interface NumInputFactory extends ComponentFactory<NumInputFactory> { 009 010 /** 011 * 012 * @param label 標題 013 * @return this 014 */ 015 NumInputFactory label(String label); 016 017 018 /** 019 * 綁定指定數字類型 020 * @param type 數字類型 021 * @param <T> 數字類型 022 * @return 泛型數字輸入組件工廠 023 */ 024 <T extends Number> NumberTypeFactory<T> useNumberType(Class<T> type); 025 026 /** 027 * 028 * @param wait 等待輸入時間 (ticks) 029 * @return this 030 */ 031 NumInputFactory waitForInput(long wait); 032 033 /** 034 * 035 * @param message 輸入時的訊息 036 * @return this 037 */ 038 NumInputFactory messageInput(String message); 039 040 /** 041 * 042 * @param message 無效文字時的訊息 043 * @return this 044 */ 045 NumInputFactory messageInvalidNumber(String message); 046 047 /** 048 * 設置禁用 049 * @return this 050 */ 051 NumInputFactory disabled(); 052 053 /** 054 * 泛型數字輸入組件工廠 055 * @param <T> 數字類型 056 */ 057 interface NumberTypeFactory<T extends Number> { 058 059 /** 060 * 默認數值為 0 061 * @param min 最少數字 062 * @return this 063 */ 064 NumberTypeFactory<T> min(T min); 065 066 /** 067 * 默認數值為 64 068 * @param max 最大數字 069 * @return this 070 */ 071 NumberTypeFactory<T> max(T max); 072 073 /** 074 * 默認數值為 1 075 * @param step 增加/減少數量 076 * @return this 077 */ 078 NumberTypeFactory<T> step(T step); 079 080 081 /** 082 * 綁定 model 屬性 083 * @param field 屬性 084 * @param initValue 初始數值 085 * @return this 086 */ 087 NumberTypeFactory<T> bindInput(String field, T initValue); 088 089 /** 090 * 返回組件工廠 091 * @return this 092 */ 093 NumInputFactory then(); 094 095 } 096 097}