added gate start specific buttons (pathfinder and gatelineopeningtime) to ui. added pathfinder-event to domain. some other fixes. SORRY: serialization-test does not work.

This commit is contained in:
Fabian Tschirschnitz committed 2013-04-20 19:56:41 +02:00
1 parent dd4d93efed
commit 8e45e3a1b6
25 files changed
+446 -6

No files matched your search

@@ -114,6 +114,38 @@
android:layout_weight="0.99"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/pathfinderLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="2dp"
android:text="@string/no_pathfinder_selected"
android:textAppearance="@style/TextAppearance.Welter.TitleLabel"/>
<Button
android:id="@+id/pathFinderButton"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginBottom="20dp"
android:text="@string/set_pathfinder" />
<TextView
android:id="@+id/lineOpeningTimeLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="2dp"
android:text="@string/no_line_opening_time_selected"
android:textAppearance="@style/TextAppearance.Welter.TitleLabel"/>
<Button
android:id="@+id/lineOpeningTimeButton"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginBottom="20dp"
android:text="@string/set_line_opening_time" />
<ImageButton
android:id="@+id/abortingFlagButton"
@@ -45,4 +45,5 @@ public interface ManagedRace extends ManagedRaceIdentifier, Named, WithID {
* @return list of competitors
*/
public Iterable<Competitor> getCompetitors();
}
@@ -7,6 +7,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
import com.sap.sailing.racecommittee.app.domain.racelog.RaceLogChangedListener;
@@ -53,4 +54,9 @@ public class RaceLogChangedVisitor implements RaceLogEventVisitor {
listener.eventAdded(event);
}
@Override
public void visit(RaceLogPathfinderEvent event) {
listener.eventAdded(event);
}
}
@@ -25,7 +25,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.startphase.GateSt
public class GateStartProcedure implements StartProcedure {
private final static long startPhaseClassOverGolfUpIntervall = 8 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhasePapaUpInterval = 4 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhasePapaUpInterval = 5 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhasePapaDownInterval = 1 * 60 * 1000; // minutes * seconds * milliseconds
private final static long startPhaseClassOverGolfDownInterval = 0 * 60 * 1000; // minutes * seconds * milliseconds
@@ -120,4 +120,8 @@ public interface RaceState extends StartProcedureRaceStateChangedListener {
*/
TimePoint getIndividualRecallDisplayedTime();
String getPathfinder();
void setPathfinder(String sailingId);
}
@@ -23,6 +23,7 @@ import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.IndividualRecallFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.LastPublishedCourseDesignFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.PathfinderFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.RaceStatusAnalyzer;
import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder;
import com.sap.sailing.racecommittee.app.domain.racelog.RaceLogChangedListener;
@@ -48,6 +49,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
private LastPublishedCourseDesignFinder lastCourseDesignFinder;
private FinishPositioningListFinder finishPositioningListFinder;
private IndividualRecallFinder individualRecallFinder;
private PathfinderFinder pathfinderFinder;
public RaceStateImpl(PassAwareRaceLog raceLog, StartProcedure procedure) {
this.raceLog = raceLog;
@@ -267,4 +269,24 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
}
}
@Override
public String getPathfinder() {
return pathfinderFinder.getPathfinderId();
}
@Override
public void setPathfinder(String sailingId) {
/*RaceLogEvent event = RaceLogEventFactory.INSTANCE.createStartTimeEvent(eventTime, UUID.randomUUID(),
Collections.<Competitor> emptyList(), raceLog.getCurrentPassId(), newStartTime);
this.raceLog.add(event);*/
notifyListenersAboutPathFinderChange();
}
private void notifyListenersAboutPathFinderChange() {
// TODO Auto-generated method stub
}
}
@@ -0,0 +1,74 @@
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
import com.sap.sailing.racecommittee.app.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class RaceChooseLineOpeningTimeDialog extends RaceDialogFragment {
public interface GateLineOpeningTimeSelectionListener {
public void onLineOpeningTimeSelected();
}
private GateLineOpeningTimeSelectionListener selectionListener;
private EditText lineOpeningTimeEditText;
private Button chooseButton;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
selectionListener = (GateLineOpeningTimeSelectionListener) activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.race_choose_line_opening_time_view, container);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getDialog().setTitle(getString(R.string.set_gate_line_opening_time_title));
lineOpeningTimeEditText = (EditText) getView().findViewById(R.id.lineOpeningTimeText);
chooseButton = (Button) getDialog().findViewById(R.id.chooseLineOpeningTimeButton);
chooseButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
onChooseClicked(v);
}
});
}
protected void onChooseClicked(View view) {
int lineOpeningTime = convertToInteger(lineOpeningTimeEditText.getText().toString());
//this.getRace().changeGateLineOpeningTime(lineOpeningTime);
selectionListener.onLineOpeningTimeSelected();
Log.i("RACE_SET_GATELINE_OPENING_TIME", String.valueOf(lineOpeningTime));
dismiss();
}
protected Integer convertToInteger(String text) {
try {
return Integer.parseInt(text);
} catch (NumberFormatException ex) {
throw new IllegalStateException("An NumberFormatException occured");
}
}
@Override
public void notifyTick() {
// TODO Auto-generated method stub
}
}
@@ -0,0 +1,69 @@
package com.sap.sailing.racecommittee.app.ui.fragments.dialogs;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import com.sap.sailing.racecommittee.app.R;
public class RaceChoosePathFinderDialog extends RaceDialogFragment {
public interface PathfinderSelectionListener {
public void onPathfinderSelected();
}
private PathfinderSelectionListener selectionListener;
private EditText sailingNationalityEditText;
private EditText sailingNumberEditText;
private Button chooseButton;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
//selectionListener = (PathfinderSelectionListener) activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.race_choose_path_finder_view, container);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getDialog().setTitle(getString(R.string.set_pathfinder_title));
sailingNationalityEditText = (EditText) getView().findViewById(R.id.pathFinderNationality);
sailingNumberEditText = (EditText) getView().findViewById(R.id.pathFinderNumber);
chooseButton = (Button) getDialog().findViewById(R.id.choosePathFinderButton);
chooseButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
onChooseClicked(v);
}
});
}
protected void onChooseClicked(View view) {
String sailingId = sailingNationalityEditText.getText().toString() + " " + sailingNumberEditText.getText().toString();
this.getRace().getState().setPathfinder(sailingId);
selectionListener.onPathfinderSelected();
Log.i("RACE_SET_PATHFINDER", sailingId);
dismiss();
}
@Override
public void notifyTick() {
// TODO Auto-generated method stub
}
}
@@ -25,6 +25,8 @@ import com.sap.sailing.racecommittee.app.domain.startprocedure.impl.GateStartPha
import com.sap.sailing.racecommittee.app.logging.ExLog;
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.AbortModeSelectionDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChooseLineOpeningTimeDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceChoosePathFinderDialog;
import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment;
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceInfoListener;
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
@@ -35,10 +37,14 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
TextView raceCountdown;
TextView nextFlagCountdown;
TextView pathfinderLabel;
TextView lineOpeningTimeLabel;
ImageButton abortingFlagButton;
ImageView displayedFlag;
ImageView nextToBeDisplayedFlag;
Button resetTimeButton;
Button pathFinderButton;
Button lineOpeningTimeButton;
@Override
public void onAttach(Activity activity) {
@@ -85,10 +91,44 @@ public class GateStartPhaseFragment extends RaceFragment implements GateStartPha
infoListener.onResetTime();
}
});
pathFinderButton = (Button) getView().findViewById(R.id.pathFinderButton);
lineOpeningTimeButton = (Button) getView().findViewById(R.id.lineOpeningTimeButton);
pathfinderLabel = (TextView) getView().findViewById(R.id.pathfinderLabel);
lineOpeningTimeLabel = (TextView) getView().findViewById(R.id.lineOpeningTimeLabel);
pathFinderButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showPathFinderDialog();
}
});
lineOpeningTimeButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showLineOpeningTimeDialog();
}
});
setupUi();
}
private void showPathFinderDialog() {
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment = new RaceChoosePathFinderDialog();
Bundle args = getParameterBundle();
fragment.setArguments(args);
fragment.show(fragmentManager, null);
}
private void showLineOpeningTimeDialog() {
FragmentManager fragmentManager = getFragmentManager();
RaceDialogFragment fragment = new RaceChooseLineOpeningTimeDialog();
Bundle args = getParameterBundle();
fragment.setArguments(args);
fragment.show(fragmentManager, null);
}
private void setupUi() {
RaceLog log = getRace().getState().getRaceLog();
log.lockForRead();