1/*
2 * Copyright 2006, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8
9#include "AssignStyleCommand.h"
10
11#include <Catalog.h>
12#include <Locale.h>
13
14#include "PathSourceShape.h"
15#include "Shape.h"
16#include "Style.h"
17
18
19#undef B_TRANSLATION_CONTEXT
20#define B_TRANSLATION_CONTEXT "Icon-O-Matic-AssignStyleCmd"
21
22
23// constructor
24AssignStyleCommand::AssignStyleCommand(PathSourceShape* shape,
25									   Style* style)
26	: Command(),
27	  fShape(shape),
28	  fOldStyle(shape ? shape->Style() : NULL),
29	  fNewStyle(style)
30{
31	if (fOldStyle)
32		fOldStyle->AcquireReference();
33	if (fNewStyle)
34		fNewStyle->AcquireReference();
35}
36
37// destructor
38AssignStyleCommand::~AssignStyleCommand()
39{
40	if (fOldStyle)
41		fOldStyle->ReleaseReference();
42	if (fNewStyle)
43		fNewStyle->ReleaseReference();
44}
45
46// InitCheck
47status_t
48AssignStyleCommand::InitCheck()
49{
50	return fShape && fNewStyle ? B_OK : B_NO_INIT;
51}
52
53// Perform
54status_t
55AssignStyleCommand::Perform()
56{
57	fShape->SetStyle(fNewStyle);
58
59	return B_OK;
60}
61
62// Undo
63status_t
64AssignStyleCommand::Undo()
65{
66	fShape->SetStyle(fOldStyle);
67
68	return B_OK;
69}
70
71// GetName
72void
73AssignStyleCommand::GetName(BString& name)
74{
75	name << B_TRANSLATE("Assign style");
76	if (fNewStyle)
77		name << " \"" << fNewStyle->Name() << "\"";
78}
79
80