void ISendable.InitSendable(ISendableBuilder builder) { builder.SmartDashboardType = "String Chooser"; builder.GetEntry(INSTANCE).SetDouble(m_instance); builder.AddStringProperty(DEFAULT, () => m_defaultChoice, null); builder.AddStringArrayProperty(OPTIONS, () => m_map.Keys.ToArray(), null); builder.AddStringProperty(ACTIVE, () => { lock (m_mutex) { if (m_selected != null) { return(m_selected); } else { return(m_defaultChoice); } } }, null); lock (m_mutex) { m_activeEntries.Add(builder.GetEntry(ACTIVE)); } builder.AddStringProperty(SELECTED, null, val => { lock (m_mutex) { m_selected = val; foreach (var entry in m_activeEntries) { entry.SetString(val); } } }); }
void ISendable.InitSendable(ISendableBuilder builder) { builder.SmartDashboardType = "Command"; builder.AddStringProperty(".name", () => Name, null); builder.AddBooleanProperty("running", () => ((ICommand)this).IsScheduled, value => { ICommand c = this; if (value) { if (!c.IsScheduled) { c.Schedule(); } } else { if (c.IsScheduled) { c.Cancel(); } } }); }